局域网中的两台电脑想通过rmi技术连接通信 服务器端>ip地址:192.168.10.28 import java.net.MalformedURLException; import java.rmi.Naming; import java.rmi.RemoteException; import java.rmi.registry.LocateRegistry; public class RMIServer { public static void startServer() throws RemoteException, MalformedURLException { // 启动rmi注册服务,指定端口1099也可以直接命令行启动一个注册服务生成stub LocateRegistry.createRegistry(1099); // 创建远程对象一个或者多个实例 FingerGatherManage fingerGatherManage = new FingerGatherManageImpl(); // 把对象注册到另一台启动了rmi注册服务的机器 Naming.rebind("rmi:/192.168.10.28:1099/FingerGatherManage", fingerGatherManage); System.out.println("rmi服务器启动了"); } } 客户端>ip地址:192.168.10.8 public class RMIConnection { public static List<List<Object>> validateUserNameAndPassword(String ip, int portNum, String userName, String password) throws MalformedURLException, RemoteException, NotBoundException { FingerGatherManage fingerGatherManage = (FingerGatherManage) Naming .lookup("rmi:/" + ip + ":" + portNum + "/FingerGatherManage"); List<List<Object>> result = fingerGatherManage.validateUserNameAndPassword(userName, password); return result; } } 当我在客户端传入参数ip=192.168.10.28(服务器内网Ip)时,报错java.rmi.connectException:refused,而且传入的ip被转化成192.168.10.106 |
|
40分 |
怎么知道IP被转了
防火墙有没有屏蔽端口 |
调试跟踪发现的输入的IP被转了,服务器防火墙是关闭的,通过在客户端执行cmd命令telnet 192,168.10.28(服务器ip)这个是能通的。
|
|
60分 |
lookup(“rmi:/” + ip + “:” + portNum + “/FingerGatherManage”);
的ip应该是 Naming.rebind(“rmi:/192.168.10.28:1099/FingerGatherManage”, fingerGatherManage); 这个10.28吧。 |
不好意思。搞错了客户端地址是192.168.10.106,为什么我访问服务器IP却访问了本机的ip呢
|
|
有没有人知道的啊,我在网上找了半天都是一个解决方法在服务器端加上System.setProperty(“java.rmi.server.hostname”,”192.168.10.28″)。不过加上也没用客户端还是指向了192.168.10.106
|
|
这个rmi怎么实现,我只能在一台电脑上实现,两台电脑就不行了
|