C#でのソケットプログラミング入門:TcpListenerとSocketクラスの使い方
System.Net.Sockets名前空間とは
C#の「System.Net.Sockets」名前空間には、Windowsソケットインターフェースのマネージド実装が用意されています。これにより、.NETアプリケーションからTCP/IPなどのネットワーク通信を簡単かつ安全に扱うことができます。
同期モードと非同期モード
この名前空間のソケットプログラミングには、大きく分けて2つの基本モードが存在します。
同期(Synchronous):処理が完了するまで待機する方式。実装がシンプルで理解しやすく、小規模なツールに向いています。
非同期(Asynchronous):処理の完了を待たずに次の処理へ進める方式。UIのフリーズを防ぎたい場合や高負荷なサーバー構築に適しています。
TcpListenerクラスを使った実装例
以下は、System.Net.Sockets.TcpListenerクラスを使用してクライアントからの接続を受け付ける基本的な例です。
TcpListener l = new TcpListener(1234);
l.Start();
// ソケットを作成
Socket s = l.AcceptSocket();
Stream network = new NetworkStream(s);
このコードでは、まずポート1234で待ち受けを開始し、AcceptSocket()メソッドによってクライアントからの接続を受け付けます。取得したソケットからNetworkStreamを生成することで、データの送受信が可能になります。
TCP/IP通信用のSocketオブジェクトの作成
TCP/IPネットワーク上で通信を行うためのSocketインスタンスは、次のように生成します。
Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
コンストラクタ引数の解説
AddressFamily:Socketクラスがネットワークアドレスを解決するために使用する標準的なアドレスファミリー。「InterNetwork」を指定するとIPv4アドレスが使用されます。
SocketType:ソケットの種類を指定します。「Stream」は信頼性のある双方向の接続型通信を表します。
ProtocolType:ソケット上で使用されるネットワークプロトコルです。「Tcp」と「Udp」を指定できます。信頼性重視ならTcp、速度重視ならUdpを選択します。
-
Pythonでのソケットプログラミング入門|主要メソッドとサーバー・クライアントの実装例
ソケットとは ソケットは、双方向通信チャネルにおける両端点のことです。同じマシン上のプロセス間だけでなく、地球の反対側にあるマシン同士のプロセス間でも、ソケットを通じて通信を行うことができます。 ソケットは、TCPやUDPといった異なる種類のチャネルによって実装されます。信頼性の高い接続型通信にはTCPが、高速かつコネクションレスな通信にはUDPが適しています。 ソケットを作成するには、socketモジュールをインポートし、socket.socket()関数を使用します。 構文 my_socket = socket.socket(socket_family, socket_type, pr
-
Rubyネットワークプログラミング入門!ソケットの基本とTCPサーバーの作り方
Rubyでオリジナルのネットワーククライアントやサーバーを作りたいと思ったことはありませんか?あるいは、その仕組みを理解したいだけかもしれません。 その場合、必ず「ソケット」と向き合うことになります。 この記事では、Rubyネットワークプログラミングの基礎を学び、Rubyを使って他のサーバーやクライアントと通信を始めるための方法をご紹介します。 ソケットとは何か? ソケットとは、通信チャネルのエンドポイント(終端)のことです。クライアントとサーバーの両方が、このソケットを使って通信を行います。 その仕組みは非常にシンプルです。 接続が確立されると、ソケットにデータを書き込むことでデータが相手側