【发布时间】:2015-07-22 10:30:18
【问题描述】:
我正在尝试构建一个与 IP 版本无关的简单网络服务器。
这是我的示例代码 sn-p
hints.ai_family = AF_UNSPEC; // AF_INET or AF_INET6 to force version
hints.ai_flags = AI_PASSIVE; // fill in my IP for me
hints.ai_socktype = SOCK_STREAM;
if ((status = getaddrinfo(NULL, "8000", &hints, &res)) != 0){
fprintf(stderr, "getaddrinfo: %s\n", gai_strerror(status));
exit(0);
}
填充状态后,我遍历链表“res”的每个元素,直到找到有效条目,然后使用该结构初始化套接字。
我的问题是,在 getaddrinfo() 返回的链接列表“res”中,我是否获得了 IPv4 和 IPv6 环回地址的单独结构?在这种情况下,我是否需要创建两个套接字来分别监听和服务 IPv4 和 IPv6 环回地址?或者“res”链表中是否有一个结构可以用来创建一个“神奇地”监听两个 IPv4/v6 环回地址的套接字?
谢谢
【问题讨论】:
-
你不需要监听所有的接口。你可以用一个socket来完成。
标签: c sockets ip getaddrinfo