Accept
同期とは異なり、BeginAccept
新しく作成された接続用のソケットを提供しません。EndAccept
ただし、そうですが、将来の接続が受け入れられなくなることもあります。そこで、次のコードを作成して、複数の「クライアント」がサーバーに接続できるようにしました。
serverSocket.BeginAccept(AcceptCallback, serverSocket);
AcceptCallback
コード:
void AcceptCallback(IAsyncResult result)
{
Socket server = (Socket)result.AsyncState;
Socket client = server.EndAccept(result);
// client socket logic...
server.BeginAccept(AcceptCallback, server); // <- continue accepting connections
}
これを行うためのより良い方法はありますか?それは本質的に非同期呼び出しを再帰的にループするので、それは少し「ハッキー」のようです。
おそらく、複数のスレッドが作成されるなど、非同期メソッドを複数回呼び出すことにはオーバーヘッドがありますか?