我有一个关于套接字编程的问题。
accept()函数的原型(prototype)如下:
int accept(int s, struct sockaddr *addr, socklen_t *addrlen);
我想知道当我在第二个和第三个参数中输入 null 时会发生什么?
accept(sd, NULL, NULL);
没有sockaddr
的信息能正常运行吗?如果是,为什么?
最佳答案
当 accept
返回时,addr
和addrlen
参数用于填写有关源(ie,peer)的信息。通过为 addr
传入 NULL
,addrlen
将被忽略,并且不会返回任何信息。您实际上不需要知道对等点是谁来开始网络事务,但知道对日志记录或访问控制很有帮助。如果您没有在 accept
上获得对等信息,但稍后需要它,则必须调用 getpeername
.
关于linux:套接字编程,accept(sd, null, null),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40689585/