Linux套接字发送超时是否意味着对等方没有接收一个字节的数据或没有在超时期间完成所有数据的接收?

e3bfsja2  于 12个月前  发布在  Linux
关注(0)|答案(1)|浏览(158)

如果我设置send timeout为10ms,当超时发生时,我不知道原因是peer没有接收至少一个字节的数据还是peer没有完成接收所有的数据

o4tp2gmn

o4tp2gmn1#

在TCP中,当发送套接字的出站缓冲区填满并且在超时期间内无法接受更多字节时,send()超时。
这通常发生在接收套接字的入站缓冲区没有空间接收更多字节时,因此发送套接字缓存出站字节,等待接收方发出它可以接受字节的信号。
由于TCP是一个流,那可以小到1个字节。TCP没有消息的概念,所以你必须注意send()的返回值才能知道它实际上接受了多少字节。

相关问题