Настройте мой сервер так, чтобы удаленные пользователи могли подключаться к моей программе Java - PullRequest
3 голосов
/ 01 января 2012

Моя программа - это игра, в которой RMI позволяет пользователям подключаться к центральному серверу. Игра отлично работает на компьютерах в моей домашней сети. Я хочу, чтобы удаленные пользователи вне моей сети могли подключаться к серверу.

На основании рекомендации аналогичной темы я создал учетную запись no-ip.com для сопоставления домена с моим игровым сервером, чтобы мой компьютер был общедоступным.

Я изменил свой код, чтобы получить заглушку класса. От:

Registry registry = LocateRegistry.getRegistry("10.10.10.105"); 
/* 10.10.10.105 is my local address and this works fine on my home network */

Кому:

Registry registry = LocateRegistry.getRegistry("mychosenhostname.no-ip.org");  
/* mychosenhostname.no-ip.org is the redirecting domain that I received from no-ip */

Однако этот новый код получает ошибку java.rmi.ConnectException: Connection refused to host:. Я использовал инструмент проверки портов на canyouseeme.org и обнаружил, что мой порт 1099 открыт. Я не уверен, что еще мне нужно сделать, чтобы сделать мою программу доступной.

Кстати: я использую IDE NetBeans со Glassfish

Ответы [ 3 ]

1 голос
/ 01 января 2012
  1. Проверьте программный брандмауэр на вашем сервере. (Если вы еще не ...)

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

  3. Если вы абсолютно уверены , что у вас все в порядке, обратитесь к своему интернет-провайдеру и спросите, не блокируют ли они порт.

0 голосов
/ 05 февраля 2012

Думаю, я нашел ответ на свою проблему.Моя установка выглядела как ADSL-модем -> Маршрутизатор -> Машины.

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

0 голосов
/ 01 января 2012

Хотя открытие порта 1099 - хорошее начало, оно позволяет вам связаться с реестром RMI .Фактически экспортированные объекты RMI будут доступны на другом порту (по умолчанию произвольный порт).

У вас есть два варианта:

1) Настройте свой сервер на маршрутизаторе в качестве DMZ (Это означает, что все входящие соединения будут направлены на этот сервер).Будьте осторожны с безопасностью на вашем сервере.

2) Установите определенные порты для вашего объекта - http://docs.oracle.com/javase/1.4.2/docs/guide/rmi/faq.html#firewallIn.

PS - инструмент захвата пакетов, такой как Wireshark, часто помогает диагностировать подобные проблемы.

...