sockets - 为什么发送时没有像 MSG_WAITALL 这样的标志?

标签 sockets send recv

标志MSG_WAITALL可用于recv,它请求recv阻塞,直到完整的请求被满足。这意味着 recv 在接收到请求的数据(由参数 len 指定)之前不会返回,除非发生错误或连接已关闭。

为什么这样的标志不适用于 send 呢?我认为这对发送非常有用(send 直到调用者想要发送的所有字节都已交给 TCP 发送缓冲区后才会返回)

最佳答案

这将是多余的。您始终可以将套接字置于阻塞模式(如果尚未),在这种情况下,send() 会阻塞,直到所有数据都已传输。

关于sockets - 为什么发送时没有像 MSG_WAITALL 这样的标志?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44240934/

相关文章:

c# - 使用gmail smtp通过代理发送电子邮件

c - 如何调试 TCP recv()

java - Java中非阻塞写入的顺序

java - TLS_RSA_WITH_3DES_EDE_CBC_SHA 是否等同于 SSL_RSA_WITH_3DES_EDE_CBC_SHA

C socket : recv and send all data

c++ - 通过套接字发送文件太慢

java - com.mysql.jdbc.exceptions.jdbc4.CommunicationsException : Communications link failure Software caused connection abort: recv failed

perl - socket->recv() 与 <>?

linux - Linux 上的虚拟 TCP 连接

python - Python中的多线程TCP服务器