.net Tcp Server每隔几分钟就会收到大块的字节

时间:2012-01-24 16:24:03

标签: c# .net tcp

背景:

  • C#.net synchronous Tcp server
  • 通过使用AcceptTcpClient方法阻止TcpListener分配TcpClient对象
  • 一旦有了一个TcpClient对象,我将它传递给一个线程,该线程调用客户端的GetStream方法来创建一个NetworkStream
  • 这个NetworkStream循环,在每次迭代中执行networkStream.Read(someBuffer,0,4096)
  • 现在客户端和服务器位于同一网络上,没有拥塞可言
  • 我的服务器有足够的内存来备用
  • 如果我将服务器软件加载到另一台计算机上,则问题就会消失
  • 踢球者:来自网络Linux盒子的流量可以很好地按时完成

我的服务器已运行好几个月了。但是,在过去的周末中,不是快速连续接收小组字节,而是每隔几分钟就会发生进程开始的地方(tcpListener.AcceptTcpClient())。所以我的服务器处于空闲状态,然后将30-50个客户端请求全部捆绑到一个巨大的字节块中。毋庸置疑,这会导致巨大的延迟并给我的服务器带来压力。如果客户端请求的数量足够大,我的服务器可能需要30分钟才能赶上。

在我的客户端内置的日志记录中,我可以看到他们进行网络写入,并在每个人之间进行刷新。所以客户端运作正常。

这种对某种系统干预的反应。我的Tcp服务器(如上所述)是坏的,还是Windows中的某些东西干扰了我的流量,我该怎么说?

谢谢你们。

1 个答案:

答案 0 :(得分:1)

您可能希望在每个Tcp端点安装一些数据包捕获软件。你会感到惊讶。我现在遇到类似的问题,实际上几乎完全相同。

当我使用捕获软件时,我注意到端点之间的流量很快并且按预期准时。