为什么接受地址参数都是零



使用bsd样式的套接字,我调用:

accept(listenfd, &address, &len);

直到今天,这一切都很顺利。

从今天开始,我看到地址结构都是零。

换句话说,内核不知道客户端的ip地址是什么——或者至少,在这种情况下,它拒绝告诉我这个地址。这种情况在Linux和OS-X上都会发生。

不用说,在我审查过的验收手册页上,我没有看到任何与此问题相关的文档。我在搜索关于这个话题的讨论时也没有找到任何东西。

我可以找到很多关于我应该做什么的建议。也许我会接受一些建议(getsockname()看起来很有希望…)。但我需要了解这里发生了什么。

所以。。。为什么会发生这种情况?要使accept()按照手册页中的记录工作,需要做哪些更改?

Remy指出了与本案相关的答案。

调用accept()时,accept()的第三个参数需要初始化为第二个参数中传递的缓冲区的字节大小。

最新更新