【问题标题】:Recv Buffer size in linux serverlinux服务器中的Recv缓冲区大小
【发布时间】:2019-03-19 11:57:12
【问题描述】:

linux 服务器上的最大 recv 缓冲区大小是多少?每当缓冲区大小大于 ~1300 时,我都会面临 recv 失败。

【问题讨论】:

  • 定义“失败”。你得到什么错误?这是 UDP 还是 TCP?
  • 1472 是最大 UDP (ipv4) 数据包负载。
  • 发布您的代码。并阅读How to Ask
  • errno 是 - 1。而且它只是 TCP。
  • errno 应该是一个正值。你想在 recv 失败后立即记录 errno。

标签: c++ c sockets tcp


【解决方案1】:

TCP 对传递的缓冲区大小没有理论上的限制。

不过,请注意,在执行 TCP recv() 时,很可能返回接收到的字节数少于通知的字节数。

函数返回实际接收到的字节数

然后代码可以循环recv(),直到收到所有预期的数据。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-02-25
    • 2021-11-05
    • 2017-01-05
    • 1970-01-01
    • 2016-02-12
    • 1970-01-01
    • 2012-10-18
    • 2012-04-04
    相关资源
    最近更新 更多