私は 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によって拒否されました」という例外が発生しました。実行のある時点でローカルホスト アドレスを使用しようとしている理由がわかりません。