gpt4 book ai didi

c# - 发送消息速度套接字

转载 作者:行者123 更新时间:2023-12-03 12:06:00 27 4
gpt4 key购买 nike

我一直在从事一个项目,在该项目中我将客户端中的字符串发送到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套接字连接发送多少条消息?速度取决于什么?
    感谢您的时间!
  • 最佳答案

    不要总是刷新客户端流,您只想在写周期结束时刷新即可,否则让.NET为您处理它。每次发送东西时冲洗都会导致效率低下。

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

    从理论上讲,您可以通过您的带宽支持的套接字发送尽可能多的数据。但是您永远都不要在Thread.Sleeps上回复,因为这一天会给您带来麻烦。依靠时间来进行此类操作被认为是“肮脏的骇客”,并且会引起问题。

    关于c# - 发送消息速度套接字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11635536/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com