gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:23:21 26 4
gpt4 key购买 nike

在查看由 linux 可执行文件生成的系统调用时,我看到了这个让我觉得很奇怪的系统调用:

接受(fd, 0, 0);

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

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

最佳答案

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

它可能看起来更正常

accept(fd, NULL, NULL);

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

关于linux - 为什么你会在 addr 和 addrlen 设置为 0 的情况下调用 accept()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17635947/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com