简体   繁体   中英

connection refused at 127.0.1.1 java RMI

I am new at Java RMI technology. I have a problem that already other programmers had, but I was not able to understand what they did in the tutorials in order to solve it. I have implemented the game "tic tac toe" with Java RMI. Here the ControllerServer code

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();
    }
}

and here the 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();
    }

}

It works locally, by inserting "localhost" "127.0.0.1" or my external network IP. It does not work if client and server run on different machines.

I got the exception " connection refused by 127.0.1.1 ". I do not understand why they are trying to use a localhost address at some point of the execution.

as the other said, this is beach your IP is set to 127.0.1.1

Run a ipconfig -a to see what's the IP address of your host.

Then edit the /etc/hosts file and instead of this line 127.0.1.1 "name of the host" replace the 127.0.1.1 with the IP of your machine .

This should work.

You can always validate the IP that the rmi server is listening to, by executing:

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

If you overwrite the /etc/hosts file with the correct IP, then everything should work.

You got the address wrong when you called getRegistry(). You need to supply the address of the server host. There is normally no RMI Registry running in a client host.

This is because your the IP is most likely wrong. It is 127.0.0.1 and not 127.0.1.1 . You can try it with localhost as well.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM