问题描述
请告诉我一些我听不懂的内容。有一个功能getaddrinfo()
和一个标志AI_NUMERICHOST
。 MSDN说,在带有该标志的getaddrinfo()
中,您需要发送IP地址的数字值,而不是域名。但是为什么呢?
解决方法
getaddrinfo()
输出所请求的主机/服务的sockaddr_...
结构(sockaddr_in
或sockaddr_in6
)。不仅取决于IP地址,还取决于其他内容,例如套接字类型,服务端口等,具体取决于您的输入和hint
值。
因此,如果您已经具有字符串格式的IP地址,则可以让getaddrinfo()
为您解析该字符串(指定AI_NUMERICHOST
以避免DNS)为在输出sockaddr_...
中二进制格式,以及同时填写其他sockaddr_...
字段。