连接在127.0.1.1 java RMI被拒绝

时间:2012-09-22 12:28:56

标签: java rmi

我是Java RMI技术的新手。我有一个问题,已经有其他程序员,但我无法理解他们在教程中做了什么,以解决它。 我用Java RMI实现了游戏“tic tac toe”。 这里是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拒绝”。我不明白为什么他们试图在执行的某个时刻使用localhost地址。

3 个答案:

答案 0 :(得分:4)

正如另一个所说,这是海滩你的IP被设置为 127.0.1.1

运行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文件,那么一切都应该有效。

答案 1 :(得分:2)

调用getRegistry()时,地址错误。您需要提供服务器主机的地址。通常,客户端主机中没有运行RMI注册表。

答案 2 :(得分:1)

这是因为您的IP很可能是错误的。它是127.0.0.1而不是127.0.1.1。您也可以使用localhost进行尝试。