Ошибка при подключении к сокету - PullRequest
1 голос
/ 21 июня 2011

Мой сервер создает сокет IPV6.

На клиенте я создаю сокет IPV4.Теперь в API подключения на стороне клиента я передаю дескриптор сокета структуры адресов IPV4 и IPV6.INET_connect (sock, (SocketAddress *) in6_addr, (int) sizeof (sockaddr_in6)) == 0) где struct sockaddr_in6 in6_addr;

Ошибка подключенияЭто из-за этой или какой-то другой причины?Обратите внимание, что мой сервер IPV6 (с адресом IPV6)

Ответы [ 2 ]

3 голосов
/ 21 июня 2011

Вы должны использовать сокет IPV6 для подключения к адресу IPV6 или использовать службу туннелирования, которая будет транслировать трафик с адресов IPV4 на адреса IPV6 и с них.

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

На клиенте я создаю сокет IPV4

Почему? Не делай этого. Если ваша клиентская программа создает сокет AF_INET (или работает в ОС только для ip4), то вы ничего не можете сделать на стороне клиента , чтобы установить такое соединение.

Если вам просто нужно это сделать, то именно сервер должен быть адаптирован для работы с клиентами IPv4.

Сервер может принимать запрос на подключение от клиента ip4, но это может произойти, только если на стороне сервера отключает опцию сокета IPV6_V6ONLY и, очевидно, если ОС сервера позволяет это. В этом случае сервер ip6 увидит клиента ip4 через ipv4-сопоставленный адрес ipv6.

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