Перенос данных по TCP-порту через Java
Через сервер можно переслать пакеты данных по протоколу TCP с одного хоста внутри сети на другой, расположенный в любой точке мира. Сервер выступает посредником между клиентом и хостом.
Перенос данных через порт может быть полезен для предоставления услуг хостами с динамическими IP-адресами или без прав управления сетью. Шифрование данных при передаче позволяет обойти запрет маршрутизатора на определённые порты и протоколы.
Описание модулей
Например, если вы находитесь в командировке и хотите получить доступ к компьютеру дома через смартфон, то можно использовать сервер для пересылки данных между ними.
Commander (сервер)
${server.command.port}
и отправляет тестовые пакеты и команды на хост.${server.forward.port}
слушает команды переадресации и после их получения соединяет хост с указанным портом, а затем соединяет этот порт с сервером, обеспечивая передачу данных между хостом и клиентом.Messenger (хост)
Не требует дополнительных зависимостей и может пересылать данные с любого компьютера в локальной сети или из интернета.
Настройка
Принцип работы
Предположим, что нужно открыть 80-й порт хоста в интернете. Для этого используется 2222-й порт сервера. Процесс выглядит следующим образом:
Быстрое начало работы
mvn package
. В каталоге target
появятся файлы original-commander-1.0-SNAPSHOT.jar
(для сервера) и messenger-1.0-SNAPSHOT.jar
(для хоста).java -jar original-commander-1.0-SNAPSHOT.jar
.java -jar messenger-1.0-SNAPSHOT.jar
, или запустите его в фоновом режиме с помощью javaw -jar messenger-1.0-SNAPSHOT.jar
.admin
и 123456
) для управления переадресацией портов хоста.Частые проблемы
Если сервер использует IPv6, порт может автоматически привязываться к IPv6-адресу, что затрудняет подключение хоста. Проверьте, правильно ли отображается адрес порта с помощью команды netstat -anop|grep LIST|grep java
. Адрес должен выглядеть как 0.0.0.0:12121
. Если нет, попробуйте отключить IPv6.
На облачных серверах, таких как Alibaba Cloud ECS, могут быть ограничения на использование портов. Проверьте доступность порта с помощью команд telnet localhost 12121
на сервере и telnet ${server.addr} 12121
локально, чтобы убедиться в отсутствии ограничений.
На Ubuntu Server можно разрешить доступ к определённому порту с помощью команды ufw allow 12121/tcp
.
Структура пакета команд
Пакет команд состоит из следующих элементов:
Структура пересылаемого пакета данных
Пересылаемый пакет данных включает:
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )