4

私は Java RMI テクノロジの初心者です。私はすでに他のプログラマーが抱えていた問題を抱えていますが、それを解決するためにチュートリアルで彼らが何をしたかを理解できませんでした。ゲーム「三目並べ」を Java RMI で実装しました。ここにControllerServerコード

public ControllerServer() {

    try {
        game = new GameImpl();
        BoardView view = new BoardView(this);
        viewUpdater = new ServerViewUpdaterImpl(view);

        Game gameStub = (Game) UnicastRemoteObject.exportObject(game, 1099);
        ServerViewUpdater serverViewStub = (ServerViewUpdater) UnicastRemoteObject.exportObject(viewUpdater, 1099);

        Registry registry = LocateRegistry.createRegistry(1099);

        registry.rebind("TTTGame", gameStub);
        registry.rebind("TTTServerView", serverViewStub);


    } catch (Exception e) {
        e.printStackTrace();
    }
}

ここでは ControllerClient

public ControllerClient() {
    try {

        BoardView view = new BoardView(this);
        localView = new ClientViewUpdaterImpl(view);

        String address = JOptionPane.showInputDialog("Insert server's address: ");

        Registry registry = LocateRegistry.getRegistry(address, 1099);

        game = (Game) registry.lookup("TTTGame");
        remoteView = (ServerViewUpdater) registry.lookup("TTTServerView");
        remoteView.registerClientView(localView);


    } catch (Exception e) {
        e.printStackTrace();
    }

}

「localhost」「127.0.0.1」または外部ネットワークIPを挿入することにより、ローカルで機能します。クライアントとサーバーが異なるマシンで実行されている場合は機能しません。

「接続が127.0.1.1によって拒否されました」という例外が発生しました。実行のある時点でローカルホスト アドレスを使用しようとしている理由がわかりません。

4

3 に答える 3

3

他の人が言ったように、これはあなたのIPが127.0.1.1に設定されているビーチです

a を実行しipconfig -aて、ホストの IP アドレスを確認します。

次に、/etc/hostsファイルを編集し、この行の 127.0.1.1 "name of the host" 代わりに127.0.1.1 をマシンの IP に置き換えます

これはうまくいくはずです。

次のコマンドを実行することで、 rmi サーバーがリッスンしている IP をいつでも検証できます。

String hostname = InetAddress.getLocalHost().getHostAddress();
Log.info("this host IP is " + hostname);

ファイルを正しい IP で上書きする/etc/hostsと、すべてが機能するはずです。

于 2014-06-24T13:14:16.943 に答える
2

getRegistry()を呼び出したときに、アドレスが間違っていました。サーバーホストのアドレスを指定する必要があります。通常、クライアントホストで実行されているRMIレジストリはありません。

于 2012-09-23T12:16:07.330 に答える
1

これは、IPが間違っている可能性が高いためです。そうでは127.0.0.1ありません127.0.1.1。でもお試しいただけlocalhostます。

于 2012-09-22T12:37:47.620 に答える