如果我设置send timeout为10ms,当超时发生时,我不知道原因是peer没有接收至少一个字节的数据还是peer没有完成接收所有的数据?
o4tp2gmn1#
在TCP中,当发送套接字的出站缓冲区填满并且在超时期间内无法接受更多字节时,send()超时。这通常发生在接收套接字的入站缓冲区没有空间接收更多字节时,因此发送套接字缓存出站字节,等待接收方发出它可以接受字节的信号。由于TCP是一个流,那可以小到1个字节。TCP没有消息的概念,所以你必须注意send()的返回值才能知道它实际上接受了多少字节。
send()
1条答案
按热度按时间o4tp2gmn1#
在TCP中,当发送套接字的出站缓冲区填满并且在超时期间内无法接受更多字节时,
send()
超时。这通常发生在接收套接字的入站缓冲区没有空间接收更多字节时,因此发送套接字缓存出站字节,等待接收方发出它可以接受字节的信号。
由于TCP是一个流,那可以小到1个字节。TCP没有消息的概念,所以你必须注意
send()
的返回值才能知道它实际上接受了多少字节。