客户端运行时是不是先通过lookup方法中的url连上主机,然后在注册表中查找引用对象。
如果本地没有存根就通过codebase的地址下载,也就是说rebind()中的url要与lookup()中地址的相同,如果是这样我的思路就是对的。
广域网中别的不同ip的机器作为客户端的好象连上了我机器,不然就不会解析出我的局域网ip“Connection refused to host: 172.19.25.62”。那为什么会这样呢?

解决方案 »

  1.   

    看你的 Exception 
    java.rmi.ConnectException: Connection refused to host: 172.19.25.62;
    nested exception is:
    java.net.ConnectException: Connection timed out: connect
    应该不是 RMI 的问题 而是连接上的问题我没看明白 哪个是你的服务器端
    >(我的电脑的局域网IP:172.19.25.62,拨号后的IP:219.129.57.224)
    这个是你的 服务器 吗?
    看上去你 lookup 的是 172.19.25.62 
    既然 拨号后的IP:219.129.57.224
    就应该用 拨号后的服务器端 IP
      

  2.   

    程序里rebind()中的url要与lookup()中地址都是拨号后的ip局域网不能试,因为大家的网卡物理地址相同,根本就找不到对方,通过广域网也一样啊
    整个过程172.19.25.62我从头到尾都没用过,结果显然通过拨号ip两台机连上了,怎么会不能访问?
      

  3.   

    我的没你那么复杂 在局域网可以调用!如果你们物理地址是一样的你把你的client放到别人的机子上运行 把你的ip改一下 然后运行server  先调起来 再考虑其它问题
      

  4.   

    局域网能不能调用又能说明什么问题?我将client,接口,policy传给别的学校的同学,经过测试结果也是相同,很郁闷
      

  5.   

    因为ip地址 和server的地址不定
    所以当时是这样做的我的是applet和rmi
    然后用一个tomcat做web server 
    applet只要取得host的ip 然后和tomcat所在的机子上运行的rmi进行交互!