在 C 中通过套接字进行编程时,可以通过使用节点 as和in 中的标志getaddrinfo
调用该函数来自动获取有关其接口的信息。它返回适合ing 和ing 连接的结构列表。在配置了默认接口的多宿主主机上,将返回与可能不正确的默认接口相关的结构。如何调用以从所有可用接口返回结构,以便可以适当地选择一个。NULL
AI_PASSIVE
hints.ai_flags
addrinfo
bind()
accept()
getaddrinfo
getaddrinfo
问问题
1613 次
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 回答