发送消息速度套接字

时间:2012-07-24 16:44:04

标签: c# performance sockets transfer

我一直致力于一个项目,我在C#中将字符串从客户端发送到服务器。 如果你们中的一些人有时间回答我的问题如下:

  • 我发送的字符串如下:

    clientStream.Write(buffer, 0, buffer.Length);
    clientStream.Flush();
    

其中clientStream是NetworkStream。但是如果函数处于while循环中则会成为问题 如下:

while(true)
{
        clientStream.Write(buffer, 0, buffer.Length);
        clientStream.Flush();
}

消息似乎有时在服务器部分交织在一起并且已损坏。但是如果我在while循环中添加一个Thread.Sleep(可能有30作为in参数)调用。 我想知道为什么消息交织在一起,如果它是TCP套接字连接?函数如何调用:

clientStream.Write(buffer, 0, buffer.Length);
clientStream.Flush();

工作?

  • 您可以通过TCP套接字连接每秒发送多少条消息?速度取决于什么? 谢谢你的时间!

1 个答案:

答案 0 :(得分:1)

不要总是刷新客户端流,你只想在写周期结束时刷新,否则让.NET为你处理它。每次发送东西时刷新都是低效的。

还要记住,TCP流可以以不同的顺序到达并在接收方重新组装以使用TCP Serials有意义,这是透明地完成的,但如果您通过wireshark查看流,那么您可能会看到这一点。

理论上,您可以在带宽支持的情况下通过套接字发送尽可能多的数据。但是你永远不应该回复Thread.Sleeps,因为有一天这会让你感到震惊。依赖于任何时间这样的时间被认为是“肮脏的黑客”,并将导致问题。