【问题标题】:How to set an automatic BufferSize?如何设置自动BufferSize?
【发布时间】:2023-03-25 11:52:02
【问题描述】:

我正在使用Socket.BeginReceive 方法从连接的客户端接收数据。但是,我发送的消息的大小可能相差太大。例如,一条消息可能是 100,000 字节,另一条可能是 3 字节,而 100,000 字节的消息很少发送!有没有办法将BufferSize 的值设置为自动值,就像Socket.Receive 的用法一样?

【问题讨论】:

  • 您误解了套接字的工作原理,请务必阅读基础知识。一次调用永远不会获得 100,000 个字节。 UDP 只能传输不大于 MTU 的消息。 TCP 无法处理消息,它实现了一个流。使用 4096 字节的缓冲区是一个不错的选择。

标签: c# asynchronous networking buffer


【解决方案1】:

将缓冲区大小设置为 IP 数据包的最大单元传输 (MTU) 大小 (64 KB)。它永远不会超过该大小,因为较大的消息会被分段,因此可以更轻松地传输。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-03-31
    • 1970-01-01
    • 2015-08-30
    • 2012-06-11
    • 2021-11-02
    • 1970-01-01
    • 2012-10-15
    相关资源
    最近更新 更多