【发布时间】:2020-10-22 18:44:56
【问题描述】:
请告诉我一些我无法理解的事情。有一个函数getaddrinfo(),还有一个标志AI_NUMERICHOST。 MSDN 说在getaddrinfo() 带有这个标志,你需要发送IP 地址的数值,而不是域名。但为什么呢?
我已经有了 IP 地址,为什么还要向 DNS 索要 IP 地址?
【问题讨论】:
请告诉我一些我无法理解的事情。有一个函数getaddrinfo(),还有一个标志AI_NUMERICHOST。 MSDN 说在getaddrinfo() 带有这个标志,你需要发送IP 地址的数值,而不是域名。但为什么呢?
我已经有了 IP 地址,为什么还要向 DNS 索要 IP 地址?
【问题讨论】:
getaddrinfo() 为请求的主机/服务输出sockaddr_... 结构(sockaddr_in 或sockaddr_in6)。它不仅与 IP 地址有关,还与其他事物有关,例如套接字类型、服务端口等,具体取决于您的输入和 hint 值。
因此,如果您已经有一个字符串格式的 IP 地址,您可以让 getaddrinfo() 为您解析该字符串(指定 AI_NUMERICHOST 以避免 DNS)为 二进制文件在输出sockaddr_...中格式化,同时填写其他sockaddr_...字段。
【讨论】: