当前位置: 技术问答>linux和unix
TCP发送数据,假如发送套接口是非阻塞的,而要发送的数据大于缓冲区尺寸
来源: 互联网 发布时间:2016-09-29
本文导语: 那么会不会永远返回EWOULDBLOCK或者EAGAIN而无法发送呢 | 感觉会的 | 会在IP层分包的。 | 哦 刚做了一个试验 TCP协议 客户端尝试连续两次发送1M的报文,描述符...
那么会不会永远返回EWOULDBLOCK或者EAGAIN而无法发送呢
|
感觉会的
|
会在IP层分包的。
|
哦 刚做了一个试验
TCP协议
客户端尝试连续两次发送1M的报文,描述符为非阻塞方式
服务端accept返回之后,sleep(3)
结果:客户端的第一次发送能够成功,发送了部分数据,此时缓冲区填满了
第二次发送失败,没有发送任何数据
TCP协议
客户端尝试连续两次发送1M的报文,描述符为非阻塞方式
服务端accept返回之后,sleep(3)
结果:客户端的第一次发送能够成功,发送了部分数据,此时缓冲区填满了
第二次发送失败,没有发送任何数据
|
不会返回EWOULDBLOCK,而是返回实际写入的字节数。
对于你说的情况,很可能返回的是写入缓冲区的字节数。剩下的需要再次调用write来写入。
对于你说的情况,很可能返回的是写入缓冲区的字节数。剩下的需要再次调用write来写入。