为什么接受地址参数全为零?

时间:2015-02-24 23:48:54

标签: linux sockets osx-yosemite

使用bsd样式套接字,我打电话:

accept(listenfd, &address, &len);

直到今天,这都很好。

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

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

毋庸置疑,我在审核的接受手册页上看不到与此问题相关的任何文档。我对此主题的讨论也没有找到我的任何内容。

我可以找到很多(主要是冲突的)建议,而不是我应该做什么。也许我会接受一些建议(getsockname()看起来很有希望......)。但我需要了解这里发生的事情。

那么......为什么会这样呢?需要改变什么才能使accept()按照手册页中的说明工作?

1 个答案:

答案 0 :(得分:0)

雷米指出了与此案有关的答案。

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