【发布时间】:2012-02-12 14:27:05
【问题描述】:
在 Linux 上使用阻塞套接字时,send() 是否有任何理由返回少于请求的值,其他而不是中断但部分成功的 send() 系统调用?
我知道这可能是非常实现定义的,即使没有安装任何信号处理程序(以及因此中断系统调用的原因),依赖该行为也可能非常危险。我可能会循环发送调用直到完成;但是,如果有任何官方消息,我将能够避免这种情况。
Why is it assumed that send may return with less than requested data transmitted on a blocking socket? 提出了同样的问题,但结果不确定:中断的系统调用作为返回计数短的示例被提及,但仍不清楚完整的 TCP 发送缓冲区是否会导致部分发送或send() 会只是阻塞直到缓冲区中有足够的空间。
【问题讨论】: