Java / или Android IP-туннель - PullRequest
2 голосов
/ 28 мая 2011

Нам нужно туннелировать порт на облачном сервере на устройство Android.Теперь мы используем SSH-клиент на Android (Jsch) для запуска обратного порта.Это работает, но нам не нужны / не нужны накладные расходы на шифрование / аутентификацию.

По сути, простой IP-туннель, который можно установить со стороны клиента (Android) на сервер в облаке.

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

1 Ответ

1 голос
/ 28 мая 2011

На самом деле это довольно просто реализовать в Java.Приложение Tunneler на устройстве открывает два соединения, одно с сервером и одно со службой на устройстве.Теперь, если вы используете Input- / OutputStreams (в отличие от nio Channels), вам нужны 2 потока, каждый из которых читает один из InputStreams, и просто записывает все, что они получили, в противоположный поток вывода.На сервере вам понадобится аналогичный процесс, который получает два соединения от ServerSocket.accept и должен быть в состоянии выяснить, какой из них является туннелем, а какой - клиентом службы (т. Е. Проверяет заголовок протокола туннелирования навходящие соединения).

Это становится немного сложнее, если вы хотите иметь возможность туннелировать несколько соединений одновременно.Вам нужно будет реализовать какой-то протокол для этого, чтобы иметь возможность отправлять туннелированные пакеты на несколько соединений на устройстве, если вы хотите избежать открытия нескольких туннельных соединений.

...