我正在尝试进行套接字编程,这是我尝试使用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_family设置为AF_INET6或至少对地址结构进行零初始化。

关于c++ - 为什么Mac OS X下ipv6的bind(..)给我错误号47,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6396702/

10-11 22:57
查看更多