c# - 轮询数千个 TCP 套接字

标签 c# .net tcp threadpool

我需要使用专有协议(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/

相关文章:

python - 如何在不关闭 tcp 套接字的情况下发送文件结尾

c - 没有keepalive的物理断开的tcp套接字的生命周期

c# - 使用 PowerShell 中的 WinRM 连接到远程服务器失败

c# - 从 C++ 代码向 C# 代码发送回调时访问冲突读取位置 0x00000004

c# - expression bodied成员如何区分void和non-void?

c# - 未将对象引用设置为对象实例 由 DBNull.Value 引起

.net - 为什么我在使用 WCF 服务时收到 "The .Net Framing mode being used is not supported by"错误?

C# TCP 监听器

c# - View 模型应该如何与存储库通信?

c# - 如何在标题下方的 Accordion 中添加箭头图像而不是标题背景?