Есть ли какая-либо функция C ++ для проверки того, поддерживает ли компьютер, на котором работает моя программа, подключение IPv6?
Мне нужно знать что-то вроде результата этой страницы http://test-ipv6.com/, но в С ++.
РЕДАКТИРОВАТЬ: Я пытался использовать getifaddrs()
, Но возвращаемое значение может быть AF_INET6 found
, потому что у меня действительно установлен адрес IPv6, но подключение по IPv6 не работает (возможно, из-за провайдера). Так есть ли способ, как проверить, работает ли подключение по протоколу IPv6?
Все современные операционные системы поддерживают IPv6, поэтому вам не нужно беспокоиться о том, доступен ли протокол. (Если это не так, ваша программа не будет компилироваться в любом случае.)
Но единственный способ определить, действительно ли компьютер имеет работоспособное соединение IPv6, — попытаться установить соединение IPv6.
Это на самом деле что делает Microsoft со своим индикатором состояния сети в Windows. Они пытаются загрузить URL с веб-сервера только для IPv6 и URL с веб-сервера только для IPv4. Если оба из них не удаются, вы получите желтый треугольник с восклицательным знаком над значком сети на панели задач.
Так как мне нужна была аналогичная функциональность, но мне также нужны были реальные адреса IPv6, Я создал свою государственную службу который включает в себя эту функциональность (и несколько других вещей). Итак, у меня есть URL только для IPv6 который возвращает публичный адрес IPv6, и URL только для IPv4 который возвращает публичный адрес IPv4.
Потому что один из URL-адресов только доступны через IPv6, а другой только доступны через IPv4, вы можете независимо проверить подключение для каждого протокола.
В любом случае, если ваша попытка получить URL не удалась, вы можете проверить возвращаемую ошибку, чтобы определить, в чем проблема.
Других решений пока нет …