リンクに従って、非同期 TCP サーバーを作成しました。ただし、すべての例は、受信への応答としてデータを送信することのみをカバーしています。私の質問は、データを特定の TCP クライアントにプッシュする方法です。
byte[] をクライアント ID 1 に送信/プッシュする必要があるとしましょう。SocketAsyncEventArgs アーキテクチャを使用してこれを達成するにはどうすればよいですか?
アクティブな接続とクライアント ID のリストを保持する必要があることはわかっています。データをプッシュするには、このリストをどのように表示する必要がありますか?
public bool Send(Socket socket, byte[] message)
{
SocketAsyncEventArgs completeArgs = new SocketAsyncEventArgs();
if (socket.Connected)
{
// Prepare arguments for send/receive operation.
completeArgs.SetBuffer(message, 0, message.Length);
completeArgs.UserToken = socket;
completeArgs.AcceptSocket = socket;
completeArgs.Completed += new EventHandler<SocketAsyncEventArgs>(OnIOCompleted);
// Start sending asyncronally.
socket.SendAsync(completeArgs);
}
return true;
}