gpt4 book ai didi

c++ - sockaddr_in 中的 sin_port

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

如果我需要获取 IP 的主机名,我应该使用哪个端口? getnameinfo() 从哪里获取主机名?

struct sockaddr_in sa;
sa.sin_family = AF_INET;
sa.sin_port = htons(?); // which port ?
inet_pton(AF_INET, "x.x.x.x", &(sa.sin_addr));

char host[NI_MAXHOST];
getnameinfo((struct sockaddr *)&sa, sizeof(sa), host, NI_MAXHOST, NULL, 0, NI_NAMEREQD);

puts(host);

最佳答案

如果您不使用 servservlen 参数,则端口号无关紧要。否则它用于通过端口号查找服务,例如“ssh” 用于端口 22,“smtp” 用于端口 25,等等(有关更多信息,请参见 /etc/services)。

getnameinfo() 可以从很多地方获取主机名(使用 nsswitch.conf,可以为不同的系统启用杂项 libnss 模块种名称解析)。在典型的桌面 Linux 发行版上,我希望它首先查看 /etc/hosts,然后根据 /etc/resolv.conf 查询 DNS 服务器。

关于c++ - sockaddr_in 中的 sin_port,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14759415/

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