Вопрос

У меня есть небольшой пример программы udp, написанный с использованием ipv4.Если я изменю код на ipv6, смогу ли я по-прежнему общаться с кем-либо, использующим прослушиватель с адресом ipv4?Я смотрел примеры портирования на

http://ou800doc.caldera.com/en/SDK_netapi/sockC.PortIPv4appIPv6.html

Я не уверен, обеспечит ли простое изменение кода его работу или мне придется писать его в режиме дуэльного стека.

Это было полезно?

Решение

Да и нет...IPv6 содержит совершенно другую адресацию, поэтому вам придется перекодировать свое приложение, чтобы использовать альтернативные заголовки и размеры структур.

Однако диапазон адресов IPv4 доступен в IPv6, синтаксис заключается в добавлении двух двоеточий перед стандартным адресом (например:::10.11.12.13).Вы также можете встраивать адреса IPv4 в пакеты IPv6.

Другие советы

Не без помощи шлюз IPv4/IPv6 в сети, и даже тогда общение будет ограничено типичные проблемы представлен шлюзами трансляции сетевых адресов.Традиционный совет программистам, сталкивающимся с подобными решениями, — рекомендовать одновременно поддерживать как IPv4, так и IPv6.

IPv4 и IPv6 по своей сути несовместимы друг с другом.
Несколько основных причин:

  • адресное пространство совершенно другое (IPv6 имеет 128-битные адреса, IPv4 — 32-битные адреса)
  • заголовок протокола IPv6 совсем не похож на заголовок протокола IPv4.если вы попытаетесь проанализировать пакет IPv6 как IPv4, вы получите ерунду.

Очевидным результатом этого является то, что если вы откроете сокет IPv6, вы не сможете прослушивать его, используя сокет IPv4.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top