我正在进行套接字编程的第一步,因为我试图使用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? 麻烦是绑定返回-1而错误是47 根据errno.h,它是:
#define EAFNOSUPPORT 47 /* Address family not supported by protocol
family */
我错过了什么?
由于
答案 0 :(得分:2)
你应该将addr-> sin6_family设置为AF_INET6,或者在将地址结构传递给bind()之前至少将其初始化为零。