2016-04-11 10 views
1

JGroupsを使用して簡単なチャットアプリケーションを開発しています。アプリケーションは私のコンピュータでは完全に動作しますが、同じネットワーク上の別のコンピュータでアプリケーションを実行しようとすると動作しません。JGroups(JChannel)チャットアプリケーションが他のコンピュータで動作しない

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

start()関数の設定がありません。他のコンピュータで実行すると、クラスタ「Test」のチャットインスタンスが認識されません。クラスタ "テスト"の別のインスタンスを作成するかもしれません。

助けが必要です。ありがとう!

+0

コンピュータでIPv6を設定しましたか? JGoupsは、IPv6で他のインスタンスを見つけるのに時には問題があります。プログラムの起動時に "-Djava.net.preferIPv4Stack = true"の設定を追加してみてください。どのランデブー・モジュールとプロトコルを使用していますか? – Konrad

+0

私はデフォルトを使用しています(UDPだと思います)。 preferIPv4Stack = trueを使用しようとします。御時間ありがとうございます!それがうまくいくかどうかはわかります。 –

+0

動作しませんでした。私は今bind_addrを設定しようとしています。 –

答えて

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の問題である可能性もあります。

+0

こんにちは、プログラムは、スイングコンポーネントを使用して、簡単なチャットウィンドウを開きます。自分のコンピュータで2つ以上のプログラムを実行すると、完全に他の人にメッセージを送信しますが、別のコンピュータで実行すると、自分のコンピュータで開かれているチャットウィンドウを認識しないように見えます。私はbind_addrを設定しようとします。それはchannel.getProtocolStack.findProtocol(TP.class).setValue "bind_addr"、 "192.168.10.101")のようなものですか? 192.168.10.101は私のネットワークアドレスです。私はsun.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentExceptionでjava.lang.Stringで \tにjava.net.InetAddressフィールドorg.jgroups.protocols.TP.bind_addrを設定できません」取得しています –

+0

(不明なソース)sun.reflectで \t .UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(不明なソース) "。 bind_addrを設定しようとしています。私はchannel.getProtocolStack()を試しています。findProtocol(TP.class).setValue( "bind_addr"、新しい文字列( "192.168.10.101")); –

+0

編集:問題が解決しました。 channel.getProtocolStack()。findProtocol(TP.class).setValue( "bind_addr"、InetAddress.getByName( "192.168.10.101")); –

関連する問題