0

1 つのサーバーと 2 つのクライアントの間で 2 つの通信を確立しようとしています。これは、すべてのプログラムが同じマシンで実行されている場合は非常にうまく機能しますが、LAN ネットワークを使用しようとすると機能しません。エラーが発生しました:

java.rmi.ConnectException: Connection refused to host: 192.168.1.24; nested exception is: 
java.net.ConnectException: Connection timed out: connect

サーバーコードは次のとおりです。

public class Server{
private Game partie; // The class Game extends UnicastRemoteObject and implements ServerInterface


public Server() throws RemoteException {
    System.setProperty("java.rmi.server.hostname", "192.168.1.24");
    partie = new Game();
    LocateRegistry.createRegistry(1099);
    try{
        Naming.rebind("Server", partie);
    }
    catch(Exception e){
        e.printStackTrace();
    }
}
public static void main(String argv[]) throws RemoteException{
    new Server();
}
}

クライアント コードのコンストラクタは次のとおりです。

public Client(String aName, String aServerAdress) throws RemoteException {
    super();
    name = aName;
    ServerAdress = aServerAdress; //  = "192.168.1.24"
    theRegistry = LocateRegistry.getRegistry(ServerAdress);

    try {
        serverInterface = (ServerInterface) theRegistry.lookup("Server");
    } catch (NotBoundException e1) {
        e1.printStackTrace();
    }



    try {
        theRegistry.bind(name, this); // For two-way communication
    } catch (AlreadyBoundException e) {
        e.printStackTrace();
    }


    serverInterface.registerClient(name);
}

registerClient(String name) コードはおおよそです (Game クラス内):

cd_client = (ClientInterface) Naming.lookup("rmi://127.0.0.1/" + name);

すべてのファイアウォールが無効になっています。

私はこの問題に何時間も取り組んできましたが、何が問題なのかまだわかりません。少しでもお役に立てれば本当に幸いです。ありがとうございました

4

1 に答える 1

4

127.0.0.1 (レジストリ バインディングを除く) をすべて LAN IP アドレス (この場合は 192.168.1.24) に変更します。

127.0.0.1 はループバックアドレスです。

「ループバック(ループバック)は、意図的な処理や変更を行うことなく、電子信号、デジタルデータストリーム、またはアイテムの流れを元の施設からソースの受信側にルーティングする方法を説明しています。これは主に、送信または交通インフラ」です。-- ウィキペディアより

于 2013-04-04T18:24:06.827 に答える