Клиентский сервер Java TCP, работающий через локальную сеть с перенаправлением портов, но не с Hamachi

У меня есть базовая программа TCP Java Client Server, которая может подключаться по локальной сети, а также когда я использую свой общедоступный IP-адрес с переадресацией портов.

Что меня беспокоит, так это то, что она не работает, когда я пытаюсь использовать ту же программу внутри сети Hamachi VPN. Я хочу, чтобы он работал и там, так как многие люди стараются избегать переадресации портов, но используют хамачи, поскольку это кажется им проще.

Код сервера ss = new ServerSocket (4444); Клиент c = ss.accept ();

Клиентский код Socket client = new Socket (, 4444); printWriter = новый PrintWriter (новый OutputStreamWriter (client.getOutputStream ()));

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

Заранее спасибо!


person Kevin Streicher    schedule 11.12.2013    source источник


Ответы (2)


Может ли Хамачи действительно блокировать порт? Мне нравится использовать ncat и nmap, чтобы проверить эти вещи.

"ncat -l номер порта" запустит сервер, прослушивающий номер порта.

"nmap -Pn -p1234 someHost" будет видеть, открыт ли порт 1234 на someHost (без выполнения проверки связи, чтобы определить, включен ли хост первым)

Настройте вышеуказанное для своего сервера и клиента, попробуйте его для своего порта 4444 и попробуйте его с некоторыми портами, которые никто не блокирует, например, 80 или 443. Если это работает для этих обычных портов, но не для 4444, то что-то (хамачи?) Блокирует этот порт.

person Anssssss    schedule 12.12.2013

Ошибка заключалась в том, что другая часть программы закрывала некоторые потоки, и, как и в случае с закрытием java, один инкапсулированный поток закрывает все, что находится под ним.

person Kevin Streicher    schedule 15.11.2014