この記事では、この API のリファレンス ドキュメントに補足的な解説を提供します。
Socket クラスは、ネットワーク通信用の豊富なメソッドとプロパティのセットを提供します。 Socket クラスを使用すると、ProtocolType列挙に記載されている通信プロトコルのいずれかを使用して、同期データ転送と非同期データ転送の両方を実行できます。
Socket クラスは、非同期メソッドの .NET 名前付けパターンに従います。 たとえば、同期 Receive メソッドは、非同期 ReceiveAsync バリアントに対応します。
同期操作モードには、次のメソッドを使用します。
- TCP などの接続指向プロトコルを使用している場合、サーバーは Listen メソッドを使用して接続をリッスンできます。 Accept メソッドは、受信した接続要求を処理し、リモート ホストとのデータ通信に使用できるSocketを返します。 この返された Socket を使用して、 Send または Receive メソッドを呼び出します。 ローカル IP アドレスとポート番号を指定する場合は、Bind メソッドを呼び出す前に、Listen メソッドを呼び出します。 基になるサービス プロバイダーに空きポートを割り当てる場合は、0 のポート番号を使用します。 リッスンしているホストに接続する場合は、 Connect メソッドを呼び出します。 データを通信するには、 Send メソッドまたは Receive メソッドを呼び出します。
- UDP などのコネクションレス プロトコルを使用している場合は、接続をリッスンする必要はまったくありません。 ReceiveFrom メソッドを呼び出して、受信データグラムを受け入れます。 SendTo メソッドを使用して、リモート ホストにデータグラムを送信します。
通信を非同期的に処理するには、次のメソッドを使用します。
- TCP などの接続指向プロトコルを使用している場合は、 ConnectAsync を使用してリッスンしているホストに接続します。 SendAsyncまたはReceiveAsyncを使用して、データを非同期的に通信します。 受信接続要求は、 AcceptAsyncを使用して処理できます。
- UDP などのコネクションレス プロトコルを使用している場合は、 SendToAsync を使用してデータグラムを送信し、データグラムを受信 ReceiveFromAsync。
1 つのソケットに対して複数の非同期操作を実行する場合、それらが開始された順序で必ずしも完了するとは限りません。
データの送受信が完了したら、 Shutdown メソッドを使用して Socketを無効にします。 Shutdownを呼び出した後、Close メソッドを呼び出して、Socketに関連付けられているすべてのリソースを解放します。
Socket クラスを使用すると、Socket メソッドを使用してSetSocketOptionを構成できます。 GetSocketOption メソッドを使用してこれらの設定を取得します。
.NET