我正在开发一个项目,我有一个客户端需要打开到多个服务器(100)的Telnet会话并等待消息。消息很小(<80字节)并且将随机发生。
我已经读过,通过为每个“服务器”创建一个线程来做这件事是不好的。我正在寻找有关使用TCPClient或Winsock或Catalyst处理多个站点的最佳方法的建议或
感谢您的帮助!
Gary M
答案 0 :(得分:1)
由于它是Windows平台,因此有很多选择。您可以使用Winsock 选择功能,或 WSAPoll ,或 WSAAsyncSelect 或completition端口。
select / WSAPoll 的工作方式与Posix类似,并且有很多示例,以及一些关于如何使用它们的现成库。
WSAAsyncSelect 会将事件发送到UI线程(您需要有窗口)。如果您的应用程序有一个窗口,这可能是最简单的选项,因为所有活动都将在窗口线程中发生,而库负责事件序列化。
另外看一下(重要的是你有超过64个连接): http://msdn.microsoft.com/en-us/library/windows/desktop/ms739169(v=vs.85).aspx
使用Windows completition端口: http://msdn.microsoft.com/en-us/magazine/cc302334.aspx http://msdn.microsoft.com/en-us/magazine/ms810436.aspx