тестирование — тест подключения IPv6 в переполнении стека

Есть ли какая-либо функция C ++ для проверки того, поддерживает ли компьютер, на котором работает моя программа, подключение IPv6?

Мне нужно знать что-то вроде результата этой страницы http://test-ipv6.com/, но в С ++.

РЕДАКТИРОВАТЬ: Я пытался использовать getifaddrs(), Но возвращаемое значение может быть AF_INET6 found, потому что у меня действительно установлен адрес IPv6, но подключение по IPv6 не работает (возможно, из-за провайдера). Так есть ли способ, как проверить, работает ли подключение по протоколу IPv6?

2

Решение

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

Но единственный способ определить, действительно ли компьютер имеет работоспособное соединение IPv6, — попытаться установить соединение IPv6.

Это на самом деле что делает Microsoft со своим индикатором состояния сети в Windows. Они пытаются загрузить URL с веб-сервера только для IPv6 и URL с веб-сервера только для IPv4. Если оба из них не удаются, вы получите желтый треугольник с восклицательным знаком над значком сети на панели задач.

Так как мне нужна была аналогичная функциональность, но мне также нужны были реальные адреса IPv6, Я создал свою государственную службу который включает в себя эту функциональность (и несколько других вещей). Итак, у меня есть URL только для IPv6 который возвращает публичный адрес IPv6, и URL только для IPv4 который возвращает публичный адрес IPv4.

Потому что один из URL-адресов только доступны через IPv6, а другой только доступны через IPv4, вы можете независимо проверить подключение для каждого протокола.

В любом случае, если ваша попытка получить URL не удалась, вы можете проверить возвращаемую ошибку, чтобы определить, в чем проблема.

0

Другие решения

Других решений пока нет …