2010-11-12 5 views
1

Я планирую создать несколько программ на Java, которые используют классы ServerSocket и Socket. Я правильно построил код, и я могу правильно подключаться. Тем не менее, я хочу сделать его максимально простым для пользователя, когда дело доходит до соединений и серверов. Итак, мне нужен метод для пересылки изнутри Java, так что мои программы могут создавать серверы на клиентской машине и обмениваться данными с другими машинами по всему Интернету, но пользователю программы не нужно прилагать никаких дополнительных усилий. Есть ли эффективный способ выполнить это без доступа к каким-либо внешним программам, которые необходимо загрузить?Перенаправление портов изнутри Java

ответ

1

Вы можете использовать этот little project.

Примечание: клиентские машины обычно находятся за шлюзами NAT, поэтому другие компьютеры в Интернете не могут получить к ним доступ напрямую.

0

Как подключить входящее соединение к выходному соединению?

Если вы извлекаете как InputStream и OutputStream обоих сокетов вы можете использовать PipedInputStream и PipedOutputStream соединить два различных сокетов и перенаправить соединение. См. Документацию here и here.

+0

Вам все еще нужно написать код для копирования потоков, и когда вы это сделали, для чего нужны трубы? – EJP

0

Если сервер находится за NAT или брандмауэром, и вы не хотите использовать man-in-the-middle для облегчения подключения, тогда это будет довольно сложно. Я предлагаю вам взглянуть на NAT hole punching и, в частности, на реализацию Java с открытым исходным кодом, например Rodi.

+0

Это работает только для UDP, а также требует изменения другой стороны. –

Смежные вопросы