linux:socket编程,接受(sd,null,null)

时间:2016-11-19 05:33:38

标签: linux sockets

我对套接字编程有疑问。

accept()函数的原型如下:

int accept(int s, struct sockaddr *addr, socklen_t *addrlen);

我想知道的是当我在第二个和第三个参数中放入null时会发生什么?

accept(sd, NULL, NULL);

没有关于sockaddr的信息,它能否正常运行?如果是这样,为什么?

1 个答案:

答案 0 :(得分:2)

accept返回时,addraddrlen参数用于填写有关来源的信息( ie ,peer)。通过NULL传递addraddrlen将被忽略,并且不会返回任何信息。您实际上不需要知道对等方是谁开始网络事务,但是有助于记录或访问控制。如果您未在accept上获得对等信息,但稍后需要,则必须致电getpeername