如果我将套接字的发送超时设置为10ms,当发生超时时,我不知道原因是peer没有接收至少一个字节数据还是peer没有完成接收所有数据?
在 TCP 中,当发送套接字的
local缓冲区已满且无法在超时时间内接受更多字节时,
send()
就会超时。当对等方没有空间接收更多字节时,就会发生这种情况,因此本地缓冲区会缓存传出字节,等待对等方发出可以再次接受字节的信号。由于 TCP 是一个流,因此可以小至 1 个字节。 TCP没有消息的概念,所以你必须注意send()
的返回值才能知道它实际接受了多少字节。