用一下代码去bind本机的ipv6地址失败,但是绑定::1和0是可以的
{
int fd, on(1), res;
struct sockaddr_in6 addr;
memset(&addr, 0, sizeof(addr));
addr.sin6_family = AF_INET6;
addr.sin6_port = htons(port);
res = inet_pton(AF_INET6, "fe80::7e3a:9e2a:85e0:a9ae", &addr.sin6_addr);
fd = socket(AF_INET6, SOCK_STREAM, 0);
if(fd<0)
goto Fail;
res = setsockopt(fd, SOL_SOCKET, SO_REUSEADDR, &on, sizeof(on));
if(bind(fd, (struct sockaddr*)&addr, sizeof(struct sockaddr_in6))<0)
goto Fail;
if(listen(fd, num)<0)
goto Fail;
return fd;
Fail:
err = errno;
socket_CloseFd(fd);
return -1;
}
本机的ipv6地址如下,不会有错