识别具有多个异步 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.
我的应用程序有许多 tcp 客户端,用于在收到指示时更新数百个服务器。我在设计中遇到了一个小但重要的问题。
我的程序从队列中取出一条传出消息,并从客户端数组中选择一个可用的客户端,我将其称为 client1。它使用 BeginConnect 在 tcpclient 上启动连接并发出回调方法。然后程序继续处理队列中的其他消息以及将要发送它们的 tcpclients。
当 client1 发生回调时,我的程序获得一个 AsyncResult,我可以从中解析套接字。
这是我的问题。我怎么知道我有哪个套接字或 TCPClient?这很重要,因为我需要知道在这个连接的客户端上发送哪条消息。
我查看了套接字,但没有找到名称 属性。
如何识别套接字以便知道正确的消息对话?
谢谢!
经过更多的学习和研究,我意识到回调会传递任何 System.Object。所以答案就像将 TCPClient 包装在 class 中一样简单,该 class 具有可以识别其用途的属性。
在我的例子中,一个简单的 class 带有套接字、消息的字符串、IP 的字符串和端口的 int 就足以处理回调时的情况。请记住,您必须将 IAsyncResult.AsyncState 转换回包装器的类型 class.