Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 为什么在addr和addrlen设置为0的情况下调用accept()?_Linux_Sockets_64 Bit_System Calls - Fatal编程技术网

Linux 为什么在addr和addrlen设置为0的情况下调用accept()?

Linux 为什么在addr和addrlen设置为0的情况下调用accept()?,linux,sockets,64-bit,system-calls,Linux,Sockets,64 Bit,System Calls,在查看linux可执行文件进行的系统调用时,我发现这一点让我感到奇怪: 接受(fd,0,0) 为什么要将addr和addrlen设置为0 我也无法连接到可执行文件正在侦听的端口,但我认为这个accept()调用与此无关。请纠正我的错误。第二个和第三个参数是协议地址及其长度。如果它们不为空accept将用连接的客户端的信息填充它们。如果您不关心或不需要知道客户是谁,您可以将这些值作为NULL传递给accept,它们将不会被返回 这可能看起来更正常 accept(fd, NULL, NULL);

在查看linux可执行文件进行的系统调用时,我发现这一点让我感到奇怪:

接受(fd,0,0)

为什么要将addr和addrlen设置为0


我也无法连接到可执行文件正在侦听的端口,但我认为这个accept()调用与此无关。请纠正我的错误。

第二个和第三个参数是协议地址及其长度。如果它们不为空
accept
将用连接的客户端的信息填充它们。如果您不关心或不需要知道客户是谁,您可以将这些值作为NULL传递给
accept
,它们将不会被返回

这可能看起来更正常

accept(fd, NULL, NULL);

就用法而言,这可能有点奇怪,我们没有更经常地看到这种形式。很多人都经历了传递
sockaddr
结构的麻烦,而且从来没有使用过返回的信息。如果您确实需要这些信息,您可以随时在连接的套接字上调用
getpeername

谢谢。在调查之后,我看到的似乎与你所说的一致。当你不想要地址数据时。