非同期でソケット通信を行うためには、サーバの接続およびTCP/IPでの受信にスレッドを使います。TCP/IPでの送信については、送信要求があると即TCP/IPで送信するため、システムによって非同期にするか同期にするかが異なります。通常は、Windows Formでユーザインタフェースを作成します。この場合、Formと同じスレッドでソケット通信を行うと、Socket接続時および受信待ち時には、画面操作ができなくなります。このため、C#言語では、サーバ側ではSocketクラスのBeginAcceptメソッド、クライアント側ではBeginConnectメソッドを使用して、接続時の処理のために、Form処理がブロックされないように制御します。また、クライアントでサーバからのデータを受け取るときには、まずBeginReceiveメソッドを呼び出し、データの受信を開始します。Receiveメソッドでは