0

手册页不包含在发生错误时通过引用传递给 accept() 函数的 sockaddr 变量的状态。

是否可以安全地假设,如果在客户端连接到您接受它的时间之间出现问题,导致 accept() 的返回值小于 0,sockaddr 结构仍然被填充并且 IP 信息是有效的?

4

1 回答 1

2

是否可以安全地假设,如果在客户端连接到您接受它的时间之间出现问题,导致 accept() 的返回值小于 0,sockaddr 结构仍然被填充并且 IP 信息是有效的?

不。如果accept()失败,则无法保证在任何地方都表明sockaddr结构或长度字发生了任何事情,或者如果它发生了任何事情,它现在意味着任何事情。具体来说,man accept说:

这个结构中填充了对端套接字的地址

如果已经失败,则没有peer socket,ergo没有peer socket地址,ergo没有填写。

于 2017-05-23T00:44:10.390 回答