单个客户端与多个服务器通信

时间:2013-03-08 02:51:21

标签: winsock tcpclient

我正在开发一个项目,我有一个客户端需要打开到多个服务器(100)的Telnet会话并等待消息。消息很小(<80字节)并且将随机发生。

我已经读过,通过为每个“服务器”创建一个线程来做这件事是不好的。我正在寻找有关使用TCPClient或Winsock或Catalyst处理多个站点的最佳方法的建议或

感谢您的帮助!

Gary M

1 个答案:

答案 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