怎么让Rmi运行在两台电脑上面?就是说我的服务器在一台电脑上 客户端是在另一台电脑上 我的url该怎么写?每次我连接的时候都会出现这样的错误
java.rmi.ConnectException: Connection refused to host: 192.168.1.106; nested exception is: 
        java.net.ConnectException: Connection refused: connect
        at sun.rmi.transport.tcp.TCPEndpoint.newSocket(TCPEndpoint.java:601)
        at sun.rmi.transport.tcp.TCPChannel.createConnection(TCPChannel.java:198)
        at sun.rmi.transport.tcp.TCPChannel.newConnection(TCPChannel.java:184)
        at sun.rmi.server.UnicastRef.newCall(UnicastRef.java:322)
        at sun.rmi.registry.RegistryImpl_Stub.lookup(Unknown Source)
        at dingqiaowu.frame.Login.initServerConnection(Login.java:59)
        at dingqiaowu.frame.Login.<init>(Login.java:46)
        at dingqiaowu.frame.Login$1.run(Login.java:40)
        at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)
        at java.awt.EventQueue.dispatchEvent(EventQueue.java:597)
        at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
        at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
        at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
        at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
Caused by: java.net.ConnectException: Connection refused: connect
        at java.net.PlainSocketImpl.socketConnect(Native Method)
        at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:333)
        at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:195)
        at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:182)
        at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366)
        at java.net.Socket.connect(Socket.java:529)
        at java.net.Socket.connect(Socket.java:478)
        at java.net.Socket.<init>(Socket.java:375)
        at java.net.Socket.<init>(Socket.java:189)
        at sun.rmi.transport.proxy.RMIDirectSocketFactory.createSocket(RMIDirectSocketFactory.java:22)
        at sun.rmi.transport.proxy.RMIMasterSocketFactory.createSocket(RMIMasterSocketFactory.java:128)
        at sun.rmi.transport.tcp.TCPEndpoint.newSocket(TCPEndpoint.java:595)
        ... 15 more
192.168.1.106是我本机的IP 我改成我局域网的另一个IP 他一直显示这个IP
服务端的代码是
                    client = new Server();
                    System.setProperty("java.rmi.server.hostname",
                            "192.168.1.3");
                    Registry reg = LocateRegistry.createRegistry(
                            Registry.REGISTRY_PORT);
                    reg.rebind("rmi://192.168.1.3:1099/dingqiaowu", client);
客户端是
            Registry reg = LocateRegistry.getRegistry(Registry.REGISTRY_PORT);
            System.getProperty("java.rmi.server.hostname",
                    "192.168.1.3");
            this.server = (ServerInterface) reg.lookup("rmi://192.168.1.3:1099/dingqiaowu");

解决方案 »

  1.   

    192.168.1.106 
    192.168.1.3哪个是server?哪个是client?错误来看,代码还是在尝试连接192.168.1.106,但是106上没有服务或者rmiregistry没有开?你的代码没有securityManager,应该不是policy的问题检查你的代码到底连哪个?
      

  2.   

    reg.rebind("rmi://192.168.1.3:1099/dingqiaowu", client);这句话好像有问题reg.rebind("dingqiaowu", client); //可能是这样,完整URI是客户端用的
      

  3.   


    package com.rmi.client;import java.rmi.Naming;import com.rmi.server.IServer;public class Client { public static void main(String[] args) {
    try {
    String url = "//localhost:8888/SERVER";
    IServer server = (IServer) Naming.lookup(url);
    boolean flage = server.checkLogin("East","123");
    System.out.println("调用远程的方法返回为:-------"+flage);
    } catch (Exception se) {
    se.printStackTrace();
    } }
    }
      

  4.   


    package com.rmi.server;import java.rmi.RemoteException;
    import java.rmi.server.UnicastRemoteObject;/**
     * 对接口的实现
     * 
     * @author 张栋芳
     * 
     */
    public class IServerImpl extends UnicastRemoteObject implements IServer { public IServerImpl() throws RemoteException {
    super();
    } public boolean checkLogin(String userName, String pwd)
    throws RemoteException {
    boolean flage = false;
    if ("East".equals(userName) && "123".equals(pwd)) {
    flage = true;
    }
    return flage;
    } public boolean server(String server) throws RemoteException { return false;
    }}
      

  5.   


    package com.rmi.server;import java.rmi.Naming;
    import java.rmi.registry.LocateRegistry;public class RmiServer { public static void main(String[] args) {
    try {
    LocateRegistry.createRegistry(8888);
    IServerImpl server = new IServerImpl();
    Naming.rebind("//localhost:8888/SERVER", server);
    System.out.println("远程对象注册成功,RMI服务已经启动,等待客户端调用....");
    } catch (Exception se) {
    se.printStackTrace();
    }
    }}
      

  6.   

    public class IServerImpl extends UnicastRemoteObject implements IServer {ServerImpl
      

  7.   

    其实就是客户端连接的问题 
    this.server = (ServerInterface) reg.lookup("rmi://192.168.1.2:1099/dingqiaowu");
    Ip是其它电脑上的 如果服务器放在本机 
    reg.lookup("rmi://192.168.1.2:1099/dingqiaowu");
    这句话里面放啥都没错 只要客户端一样就行
    现在一台做电脑做服务器 一台做客户端连接就有问题了
      

  8.   

    在本机上 不用去生成桩和柱都可以连接 我的是jdk1.6的 连接其它电脑是不是一定要生成?
      

  9.   

    java.rmi.ConnectException: Connection refused to host: 192.168.1.106
    为什么我的工程路径写的是rmi://192.168.1.102:1099/dingqiaowu
    他却报192.168.1.106?//这个是我本机的IP
    //192.168.1.102是另一台开了服务的电脑