Linux Socket发送超时是否意味着对方在超时时间内没有接收到一字节数据或没有完成接收所有数据?

问题描述 投票:0回答:1

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

c linux sockets tcp thrift
1个回答
0
投票

在 TCP 中,当发送套接字的

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

© www.soinside.com 2019 - 2024. All rights reserved.