首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在多宿主主机中选择接口

在多宿主主机中选择接口
EN

Stack Overflow用户
提问于 2011-09-21 05:55:38
回答 1查看 1.6K关注 0票数 3

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-02-16 07:55:06

也许你想把node设置为NULL。将其设置为所需接口的IP地址。

代码语言:javascript
复制
socket_result = getaddrinfo(NULL, port_num_string, &hints, &sock_addr_list);

代码语言:javascript
复制
socket_result = getaddrinfo("192.168.1.10", port_num_string, &hints, &sock_addr_list);

从手册页:

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

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7492269

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档