识别具有多个异步 tcp 客户端的套接字

Identify the socket with multiple async tcp clients

我的应用程序有许多 tcp 客户端,用于在收到指示时更新数百个服务器。我在设计中遇到了一个小但重要的问题。

我的程序从队列中取出一条传出消息,并从客户端数组中选择一个可用的客户端,我将其称为 client1。它使用 BeginConnect 在 tcpclient 上启动连接并发出回调方法。然后程序继续处理队列中的其他消息以及将要发送它们的 tcpclients。

当 client1 发生回调时,我的程序获得一个 AsyncResult,我可以从中解析套接字。

这是我的问题。我怎么知道我有哪个套接字或 TCPClient?这很重要,因为我需要知道在这个连接的客户端上发送哪条消息。

我查看了套接字,但没有找到名称 属性。

如何识别套接字以便知道正确的消息对话?

谢谢!

经过更多的学习和研究,我意识到回调会传递任何 System.Object。所以答案就像将 TCPClient 包装在 class 中一样简单,该 class 具有可以识别其用途的属性。

在我的例子中,一个简单的 class 带有套接字、消息的字符串、IP 的字符串和端口的 int 就足以处理回调时的情况。请记住,您必须将 IAsyncResult.AsyncState 转换回包装器的类型 class.