Почему bind (..) для ipv6 под Mac OS X выдает ошибку 47 - PullRequest
0 голосов
/ 18 июня 2011

Я делаю первые шаги в программировании сокетов как дополнительную сложность. Я пытаюсь использовать 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 */

Чего мне не хватает?

Спасибо

1 Ответ

2 голосов
/ 18 июня 2011

Вы должны установить addr-> sin6_family в AF_INET6 или, по крайней мере, инициализировать нулевую структуру адреса перед передачей его в bind ().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...