首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >getaddrinfo行为不一致

getaddrinfo行为不一致
EN

Stack Overflow用户
提问于 2010-08-13 11:46:07
回答 1查看 382关注 0票数 1

我正在使用getaddrinfo启动一个本地服务器,它只接受本地主机上的连接:

代码语言:javascript
复制
struct addrinfo *res;
struct addrinfo hints = {0};
hints.ai_family = AF_UNSPEC;
hints.ai_socktype = SOCK_STREAM;
hints.ai_protocol = IPPROTO_TCP;
getaddrinfo(NULL, portbuf, &hints, &res);

这似乎工作得很好,当IPv6存在时给我IPv6地址::1,当它不存在时给我IPv4地址。

除了有时在Windows2008 R2上(至少这是我唯一见过它的系统,但我见过两次,都是在客户系统上),它绑定到127.0.0.1而不是IPv6!

这会把我搞得一团糟,因为如果你绑定::1,它会同时接受到127.1和::1的连接,但是如果你绑定了127.1,那么IPv6连接就不会被接受。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-08-13 12:23:59

getaddrinfo()以未指定的顺序返回匹配地址的列表。您应该遍历列表(跟随ai_next指针),并创建一个绑定到每个返回地址的侦听套接字。

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

https://stackoverflow.com/questions/3473743

复制
相关文章

相似问题

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