Как определить порт сервера Socket за NAT

У меня есть серверный сокет в моем PC_1, ожидающий принятия. PC_2 хочет подключить этот серверный сокет. Но PC-1 и PC_2 находятся за NAT. Таким образом, PC_2 не знает, что такое прослушивание реального порта PC_1. Мне нужен механизм для идентификации этого внешнего порта сокета сервера. Я не хочу пересылать свои порты на маршрутизаторе (NAT) . Я знаю, что это можно сделать через TCP Hole Punching. Но я не нашел способ отправить пакет данных из сокета сервера. Итак, какой метод я могу сделать? Благодаря!

1
nl ja de
Я только что прочитал статью Википедии о перфорации отверстий TCP. Сейчас я немного болен. Вы определенно не сможете это сделать в чистой Java; он не поддерживает необработанный доступ к IP-пакетам, необходимый для хакерства порядковых номеров и т. д.
добавлено автор artbristol, источник
это TCP? или UDP также будет делать?
добавлено автор Aniket Inge, источник
Если ваш маршрутизатор поддерживает UPnP, вы должны проверить некоторые библиотеки UPnP для Java
добавлено автор Aniket Inge, источник
Я никогда не видел никаких возможных реализаций штамповки TCP Hole, и, на мой взгляд, теоретически возможно, имеет свои практические проблемы
добавлено автор Aniket Inge, источник
@Aniket Да, это TCP. Не UDP.
добавлено автор Jayanga Kaushalya, источник
@Aniket В любом случае мне не нравится направить свои порты. Потому что я хочу, чтобы это работало где угодно. Есть еще маршрутизаторы, которые не поддерживают UPnP.
добавлено автор Jayanga Kaushalya, источник
@duskwuff Я не спрашиваю, как выполнять переадресацию портов, но как выполнять перфорирование отверстий TCP (из JAVA).
добавлено автор Jayanga Kaushalya, источник

1 ответы

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

0
добавлено
pro.jvm
pro.jvm
3 503 участник(ов)

Сообщество разработчиков Java Scala Kotlin Groovy Clojure Чат для нач-их: @javastart Наш сайт: projvm.com projvm.ru Наш канал: @proJVM Вакансии: @jvmjobs Конфы: @jvmconf

Java & Co
Java & Co
2 370 участник(ов)

Можно обсуждать с матом и без всё, что касается жабы, вплоть до холиваров. НЕ ИМЕЕТ ОТНОШЕНИЯ К САЙТУ JAVARUSH.RU ПРАВИЛА - https://t.me/javarush/75723 Вакансии сюда - https://telegram.me/joinchat/B7IzvUCnfo6d8t3yIxKguQ По вопросам - @thedude

learn.java
learn.java
1 888 участник(ов)

Чат для начинающих и не только Статистика: https://combot.org/chat/-1001083535868 Основной чат - @jvmchat

Java Underground
Java Underground
169 участник(ов)

https://vk.com/javatutorial

Javanese Questions
Javanese Questions
109 участник(ов)

Чат предназначен для обмена знаниями строго в формате в вопрос-ответ. Тема — Java, Kotlin и Android. Вопрос должен быть предварительно прогуглен, понятно и грамотно сформулирован, помечен хэштегами. Ответ — тем более. Куски кода размером в несколько строк можно писать прямо здесь, для больших кусков кода стоит использовать http://gist.github.com/, http://pastebin.com/, https://codeshare.io/ или любой аналогичный сервис. В некоторых случаях можно прикреплять скриншоты. Стикеры и гифки запрещены. Дополнять и уточнять вопросы и ответы — редактированием исходного сообщения. Обсуждения должны приводить к редактированию вопроса/ответа и удаляться. По хештегам можно искать существующие вопросы и овтеты: #вопрос #ответ #git #generics #java #server #awt #javafx #swing #kotlin #anko #tornadofx #ktor #android #recyclerView #performance #arch #network #permissions #storage #async