轮询数千个TCP套接字

sqe*_*z3r 5 .net c# tcp threadpool

我需要通过TCP在专有协议上连接数千个客户端以周期性地获取数据.我需要在C#中编写一个.NET服务器应用程序.

第一次尝试是为每个tcp套接字创建一个自己的线程,它可以工作,但需要大量的cpu使用.

我发现使用.NET threadpool会更好.据我了解(http://msdn.microsoft.com/en-us/library/ms973903.aspx)我可以使用计时器,以便让每个套接字在给定的时间内(如1秒)周期性地获取数据.这对我来说不起作用,因为一旦连接被打开,套接字会超时,因为在打开套接字再次转动之前,还有许多套接字必须打开.

另一个尝试是使用异步回调.这对我有用,但我不知道如何让套接字循环获取数据???

All*_*nek 6

尝试使用Socket的高性能API,它允许在非常大量的套接字上同时接收数据,而不需要为每个套接字使用一个线程.在文章的底部有一个完整样本的链接.MSDN文章中还有一个SocketAsyncEventArgs类的示例.