我的应用程序有许多tcpclient,用于在指示时更新数百台服务器。我在设计方面遇到了一个小问题但很重要。
我的程序从队列中取出传出消息并从一组客户端中选择一个可用的客户端,我将其称为client1。它使用BeginConnect在tcpclient上启动连接并发出回调方法。然后程序转到队列中的其他消息和将发送它们的tcpclients。
当client1发生回调时,我的程序会得到一个AsyncResult,我可以从中解析套接字。
这是我的问题。我如何知道我有哪个套接字或TCPClient?这很重要,因为我需要知道在这个连接的客户端上发送哪条消息。
我查看了套接字并没有找到名称属性。
如何识别套接字,以便知道正确的消息传递对话?
谢谢!
答案 0 :(得分:0)
经过更多的研究和研究,我意识到回调会传递任何System.Object。因此,答案就像将TCPClient包装在具有可识别其目的的属性的类中一样简单。
在我的例子中,一个带有Socket的简单类,消息的字符串,IP的字符串和端口的int足以在进入回调时处理状态。请记住,您必须将IAsyncResult.AsyncState强制转换回包装类的类型。