C++ 为什么mac os x下的ipv6绑定(..)会给我错误号47

C++ 为什么mac os x下的ipv6绑定(..)会给我错误号47,c++,macos,sockets,C++,Macos,Sockets,我在套接字编程方面迈出了第一步,这增加了我尝试使用ipv6的复杂性: 这不应该: struct sockaddr_in6* addr = new sockaddr_in6; int s = socket(AF_INET6, SOCK_STREAM, 0); addr->sin6_addr = in6addr_any; addr->sin6_port = 1234; int ret = bind(s, (struct sockaddr*)addr, sizeof(struct sock

我在套接字编程方面迈出了第一步,这增加了我尝试使用ipv6的复杂性:

这不应该:

struct sockaddr_in6* addr = new sockaddr_in6;
int s = socket(AF_INET6, SOCK_STREAM, 0);
addr->sin6_addr = in6addr_any;
addr->sin6_port = 1234;
int ret = bind(s, (struct sockaddr*)addr, sizeof(struct sockaddr_in6));
将套接字绑定到我机器上的所有接口到端口1234? 问题是bind返回-1,errno为47 根据errno.h,其为:

#define EAFNOSUPPORT    47              /* Address family not supported by protocol 
family */
我错过了什么


谢谢

在将地址结构传递给bind()之前,您应该将addr->sin6\u family设置为AF\u INET6或至少零初始化地址结构。

好的,就这样!非常感谢你。