Приложение чата JGroups (JChannel) не работает на другом компьютере

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

void start() throws Exception { 
    channel=new JChannel();                
    channel.setReceiver(this);        
    channel.connect("Test");           
}

Мне не хватает какой-либо конфигурации функции start ()? Когда я запускаю на другом компьютере, он не распознает экземпляр чата в кластере «Тест». Возможно, он создает еще один экземпляр кластера «Тест».

Нужна помощь. Спасибо!


person Alexandre Azevedo Oliveira    schedule 11.04.2016    source источник
comment
Вы настроили IPv6 на компьютерах? JGoups иногда не может найти другие экземпляры с IPv6. Попробуйте добавить в запуск программы настройку -Djava.net.preferIPv4Stack = true. Какой модуль и протокол рандеву вы используете?   -  person Konrad    schedule 11.04.2016
comment
Я использую значение по умолчанию (думаю, это UDP). Я попробую использовать параметр PreferIPv4Stack = true. Спасибо за ваше время! Я скажу, сработало ли.   -  person Alexandre Azevedo Oliveira    schedule 11.04.2016
comment
Не сработало. Сейчас пытаюсь установить bind_addr.   -  person Alexandre Azevedo Oliveira    schedule 11.04.2016


Ответы (1)


Какой результат показывает программа? Если он включает адрес 127.0.0.1, то узлы не найдут друг друга. В этом случае установите bind_addr либо -Djgroups.bind_addr=x.x.x.x, либо channel.getProtocolStack.findProtocol(TP.class).setValue"bind_addr", "x.x.x.x"). Последнее нужно сделать перед подключением канала. Как упоминалось выше, также может быть проблема с IPv6.

person Bela Ban    schedule 11.04.2016
comment
Привет, программа открывает простое окно чата, используя компоненты Swing. Когда я запускаю две или более программ на своем компьютере, он отлично отправляет сообщения другим, но когда я запускаю на другом компьютере, он, похоже, не распознает окна чата, открытые на моем компьютере. Попробую установить bind_addr. Это как channel.getProtocolStack.findProtocol (TP.class) .setValuebind_addr, 192.168.10.101)? 192.168.10.101 - это мой сетевой адрес. - person Alexandre Azevedo Oliveira; 11.04.2016
comment
Я получаю Can not set java.net.InetAddress field org.jgroups.protocols.TP.bind_addr to java.lang.String at sun.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException (Unknown Source) at sun.reflect.UnsafeFieldGalAccessorImplItempl Источник) . При попытке установить bind_addr. Я пытаюсь использовать channel.getProtocolStack (). FindProtocol (TP.class) .setValue (bind_addr, new String (192.168.10.101)); - person Alexandre Azevedo Oliveira; 11.04.2016
comment
Изменить: проблема решена. channel.getProtocolStack (). findProtocol (TP.class) .setValue (bind_addr, InetAddress.getByName (192.168.10.101)); - person Alexandre Azevedo Oliveira; 11.04.2016