gpt4 book ai didi

c - 使用 AI_NUMERICHOST 获取地址信息

转载 作者:太空狗 更新时间:2023-10-29 12:09:00 25 4
gpt4 key购买 nike

POSIX getaddrinfo() 函数用于执行 DNS 解析,以及服务名称解析。传递给 getaddrinfo()hints 参数有一个标志字段,ai_flags

AI_NUMERICHOST 是可能的标志值。根据the documentation , 这会通知 getaddrinfo() 主机名字符串是一个 IP 地址。由于主机名已经是 IP 地址(而不是主机名),因此不需要 DNS 解析。

我无法理解此标志的用途或用例。如果您已经有了 IP 地址,为什么还需要调用 getaddrinfo()?我能看到的唯一可能的目的是您已经拥有 IP 地址,但只想获取服务名称。但在那种情况下,您可以直接调用 getservbyname(),这样会简单得多。

我唯一能想到的是 getaddrinfo() 是可重入的,而 getservbyname() 显然不是可重入的。那么 AI_NUMERICHOST 标志的全部目的是否只是提供一种执行线程安全 getservbyname() 的迂回方式?

如果不是,AI_NUMERICHOST 的目的是什么?

最佳答案

getaddrinfo的主要用途与 AI_NUMERICHOST将成为 inet_aton 的 IPv4/IPv6 不可知替代品和 inet_pton .也就是说,它采用文本 IPv4 IPv6 地址并将它们转换为 sockaddr对象;调用代码不必知道哪个是哪个。

您也可以将其用作线程安全的 getservbyname ,但我不记得上次看到没有使用 AI_NUMERICSERV 的代码是什么时候了。 ,所以我认为这不是重要的属性。

关于c - 使用 AI_NUMERICHOST 获取地址信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55272192/

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