我对套接字编程有疑问。
accept()函数的原型如下:
int accept(int s, struct sockaddr *addr, socklen_t *addrlen);
我想知道的是当我在第二个和第三个参数中放入null时会发生什么?
accept(sd, NULL, NULL);
没有关于sockaddr
的信息,它能否正常运行?如果是这样,为什么?
答案 0 :(得分:2)
accept
返回时,addr
和addrlen
参数用于填写有关来源的信息( ie ,peer)。通过NULL
传递addr
,addrlen
将被忽略,并且不会返回任何信息。您实际上不需要知道对等方是谁开始网络事务,但是有助于记录或访问控制。如果您未在accept
上获得对等信息,但稍后需要,则必须致电getpeername
。