我需要使用专有协议(protocol)通过 TCP 连接到数千个客户端,以循环获取数据。我需要用 C# 编写 .NET 服务器应用程序。
第一次尝试是为每个 tcp 套接字创建一个自己的线程,这可行但需要大量 cpu 使用。
我发现改用 .NET 线程池会更好。据我了解(http://msdn.microsoft.com/en-us/library/ms973903.aspx),我可以使用计时器让每个套接字在给定时间段(如 1 秒)内循环获取数据。这对我不起作用,因为一旦连接打开,套接字就会超时,因为在打开的套接字再次打开之前,必须打开更多的套接字。
另一个尝试是使用异步回调。这对我有用,但我不知道如何让套接字周期性地获取数据???
最佳答案
尝试使用 Socket 的 high performance API它允许同时在大量套接字上接收数据,而无需每个套接字使用一个线程。在文章的底部有一个完整示例的链接。 SocketAsyncEventArgs class 的 MSDN 文章中还有一个示例.
关于c# - 轮询数千个 TCP 套接字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10300428/