Это проблема для создания TCP
гнездо
Ответ - нет, это не делает его невозможным (если только у NAT нет непредсказуемого способа отображения IP-адресов). Однако это не просто сделать.
Короткий ответ: вам всегда будет нужен сервероподобный одноранговый узел с публичным IP-адресом, чтобы облегчить первоначальный обмен данными между узлами, расположенными за NAT. Сверстники подключаются к нему. A сообщает серверу, что он хочет установить TCP-соединение с B. Сервер уведомляет B. Выполнен анализ поведения NAT, и, если возможно, A и B пытаются открыть TCP-соединения друг с другом, предсказывая следующее сопоставление other NAT , Если все идет хорошо (и обычно это происходит), A касается базы с помощью B или наоборот. Они закрывают другие попытки подключения и связываются с действующим соединением TCP. Этот метод называется STUN для TCP.
Теперь, есть более сложная причина, почему все может пойти не так. Если вы хотите узнать больше, я написал книгу под названием Practical JXTA II, которая доступна для чтения онлайн на Scribd. Есть глава, посвященная прохождению NAT.
Надеюсь, это поможет.