2016-04-11 21 views
1

Ich entwickle eine einfache Chat-Anwendung mit JGroups. Die Anwendung funktioniert perfekt in meinem Computer, aber wenn ich versuche, es auf einem anderen Computer im selben Netzwerk auszuführen, funktioniert es nicht.JGroups (JChannel) Chat-Anwendung funktioniert nicht auf anderen Computer

Fehle ich irgendeine Konfiguration auf der start() Funktion? Wenn ich auf dem anderen Computer laufe, erkennt es die Chat-Instanz im Cluster "Test" nicht. Vielleicht erstellt es eine weitere Instanz des Clusters "Test".

Brauchen Sie Hilfe. Vielen Dank!

+0

Haben Sie IPv6 auf den Computern konfiguriert? JGoups haben manchmal Probleme, andere Instanzen mit IPv6 zu finden. Versuchen Sie, die Einstellung "-Djava.net.preferIPv4Stack = true" dem Programmstart hinzuzufügen. Welches Rendezvous-Modul und welches Protokoll verwendest du? – Konrad

+0

Ich verwende den Standard (denke, es ist UDP). Ich werde versuchen, preferIPv4Stack = true zu verwenden. Vielen Dank für Ihre Zeit! Ich werde sagen, ob es funktioniert hat. –

+0

Hat nicht funktioniert. Ich versuche jetzt, bind_addr zu setzen. –

Antwort

1

Was ist die Ausgabe, die das Programm zeigt? Wenn es eine Adresse von 127.0.0.1 enthält, werden die Knoten sich nicht finden. Setzen Sie in diesem Fall bind_addr, entweder -Djgroups.bind_addr=x.x.x.x, oder channel.getProtocolStack.findProtocol(TP.class).setValue"bind_addr", "x.x.x.x"). Letzteres muss vor dem Anschluss des Kanals erfolgen. Könnte auch ein IPv6-Problem sein, wie oben erwähnt.

+0

Hallo, das Programm öffnet ein einfaches Chat-Fenster mit Swing-Komponenten. Wenn ich zwei oder mehr Programme in meinem Computer laufen lasse, senden sie Nachrichten perfekt an die anderen, aber wenn ich auf einem anderen Computer laufe, scheint es die auf meinem Computer geöffneten Chat-Fenster nicht zu "erkennen". Ich werde versuchen, bind_addr zu setzen. Es ist wie channel.getProtocolStack.findProtocol (TP.class) .setValue "bind_addr", "192.168.10.101")? 192.168.10.101 ist meine Netzwerkadresse. –

+0

Ich erhalte "Can not java.net.InetAddress Feld org.jgroups.protocols.TP.bind_addr zu java.lang.String \t bei sun.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException (Unknown Source) \t bei sun.reflect gesetzt .UnsafeFieldAccessorImpl.throwSetIllegalArgumentException (Unbekannte Quelle) ". Beim Versuch, bind_addr zu setzen. Ich versuche channel.getProtocolStack(). FindProtocol (TP.class) .setValue ("bind_addr", neuer String ("192.168.10.101")); –

+0

Edit: Problem gelöst. channel.getProtocolStack(). findProtocol (TP.class) .setValue ("bind_addr", InetAddress.getByName ("192.168.10.101")); –