3

在 C 中通过套接字进行编程时,可以通过使用节点 as和in 中的标志getaddrinfo调用该函数来自动获取有关其接口的信息。它返回适合ing 和ing 连接的结构列表。在配置了默认接口的多宿主主机上,将返回与可能不正确的默认接口相关的结构。如何调用以从所有可用接口返回结构,以便可以适当地选择一个。NULLAI_PASSIVEhints.ai_flagsaddrinfobind()accept()getaddrinfogetaddrinfo

4

1 回答 1

1

也许您想将节点设置为 NULL。将其设置为所需接口的 IP 地址。

socket_result = getaddrinfo(NULL, port_num_string, &hints, &sock_addr_list);

socket_result = getaddrinfo("192.168.1.10", port_num_string, &hints, &sock_addr_list);

从手册页:

链表可能具有多个 addrinfo 结构的原因有多种,包括: 网络主机是多宿主的,可通过多种协议访问(例如,AF_INET 和 AF_INET6);或者可以从多种套接字类型(例如,一个 SOCK_STREAM 地址和另一个 SOCK_DGRAM 地址)获得相同的服务。

使用 getifaddr 手动搜索所有接口。

于 2012-02-15T23:55:05.823 回答