2011-05-01 4 views
1

Я запускаю свою программу на Solaris. Нужно ли настроить мою машину для запуска программы сокета с использованием API-интерфейсов IPV6. Являются ли совместимыми API-интерфейсы IPV6? например, я могу использовать AF_INET6 для обоих протоколов IPV4 n 6?Технические требования для запуска программы сокета IPV6

+0

[Этот ответ] (http://stackoverflow.com/questions/5861107/5863101#5863101) может быть полезным – mpontillo

ответ

2

Нет, вы не можете установить опцию ОС для управления этим поведением. Код приложения должен быть специально написан для использования API-интерфейсов IPv6 и разграничения между соединениями IPV4 и IPv6.

Нет, API-интерфейсы IPv6 не имеют обратной совместимости. AF_INET специфичен для IPv4, а AF_INET6 - для IPv6. Однако многие функции и структуры API IPv4 были обновлены для поддержки IPv6, а также были добавлены некоторые новые функции и структуры API, которые поддерживают оба протокола более агностически.

+0

.. Так вы хотите сказать, что если я хочу применить изменения к моему коду для поддержки IPV4 и 6, а затем я должен поставить условие if else –

+1

В некоторых местах да. С другой стороны, в зависимости от того, на какой платформе вы нацелены, IPv6 может быть установлен или даже не установлен, поэтому вам необходимо динамически загружать relavant API API API при необходимости и обновлять свой код, чтобы использовать более новую версию, агностические функции, когда они доступны. Например, используйте более новую функцию 'getaddrinfo()' вместо более старых функций 'gethostby ...()' и 'getaddrby ...()' и используйте структуру 'SOCKADDR_STORAGE' вместо' sockaddr_in' и 'sockaddr_in6 'непосредственно. –

Смежные вопросы