Я хочу подключить два устройства, которые находятся в разных местах, но подключены к Интернету, компьютер под управлением Windows 10 и смартфон Android.Приложение представляет собой простой UDP-сокет для передачи данных между ними, но у меня есть разные сценарии.
1-й сценарий.ПК с общедоступным IP-адресом и смартфоном за 3G / 4G CG-NAT) ПК открывает разъем UDP и смартфон легко и быстро подключается к общедоступному IP-адресу.
2-й сценарий.ПК за NAT с общедоступным IP-адресом и смартфон за 3G / 4G NAT)
Вариант A) ПК настраивает переадресацию портов на NAT на свой внутренний IP, а затем на смартфонподключается к этому общедоступному IP.Легко, но не быстро, потому что клиент должен настроить NAT.
Вариант B) Используйте UDP HOUN PUNCHING, чтобы открыть дыру в NAT, а затем клиент подключается к нему.
3-й сценарий.ПК и смартфон оба поддерживают CG-NAT. Вот моя проблема: ПК иногда находится за CG-NAT, возможно, из-за того, что провайдер использует эту технику, или может быть подключен к Интернету с помощью точки доступа Wi-Fi с другого смартфона.Насколько я знаю, я не могу настроить CG-NAT с любым протоколом (UPnP, PCP и т. Д.), Поэтому я не могу выполнять переадресацию портов.UDP Hole Punching не является опцией из-за «рандомизации портов», поэтому интернет-провайдер меняет мой исходный порт, когда выходит за пределы CG-NAT, и это меняется для каждого соединения.
Я разрабатываю проект, который полагаетсяна этом прямое соединение между ПК и смартфоном без технических деталей и работа всегда, когда у обоих клиентов есть интернет, не говоря уже о брандмауэре, за NAT и т. д. Я думал об использовании 3-го облачного сервера с публичным IP для их соединения, НО простодля стабилизации соединения, а не для пересылки всего трафика, потому что это добавляет задержки и затраты на трафик для моего проекта, которые недоступны.Итак ... есть ли способ дать решение моей проблемы?
Спасибо!