本人初学Java不久,现在想利用RMI做个C/S的软件,但测试RMI时怎么都连不通,测试RMI功能的部分代码如下:
CalculatorServer:Calculatorcal=newCalculatorImpl();Contextcontext=newInitialContext()...
CalculatorServer:
Calculator cal = new CalculatorImpl();
Context context = new InitialContext();
context.bind("rmi://localhost:1099/CalculatorService",cal);
System.out.println("Server started...");
CalculatorClient:
Context context = new InitialContext();
Calculator cal = (Calculator)context.lookup("rmi://112.3.254.104:1099/CalculatorService");
System.out.println(cal.add(10,5));
System.out.println(cal.sub(10,5));
System.out.println(cal.mul(10,5));
System.out.println(cal.div(10,5));
测试时服务器代码和客户端代码在两台机器上,但一连接就报错(如图),还望高手指点这到底是哪儿的问题~谢啦! 展开
Calculator cal = new CalculatorImpl();
Context context = new InitialContext();
context.bind("rmi://localhost:1099/CalculatorService",cal);
System.out.println("Server started...");
CalculatorClient:
Context context = new InitialContext();
Calculator cal = (Calculator)context.lookup("rmi://112.3.254.104:1099/CalculatorService");
System.out.println(cal.add(10,5));
System.out.println(cal.sub(10,5));
System.out.println(cal.mul(10,5));
System.out.println(cal.div(10,5));
测试时服务器代码和客户端代码在两台机器上,但一连接就报错(如图),还望高手指点这到底是哪儿的问题~谢啦! 展开
2个回答
展开全部
服务器端要运行一个服务的。
@ECHO OFF
javac -encoding utf-8 *.java
rmic CalculatorImpl
start rmiregistry
cmd /c java -Djava.security.policy=RmiServer.policy CalculatorServer
@ECHO OFF
javac -encoding utf-8 *.java
rmic CalculatorImpl
start rmiregistry
cmd /c java -Djava.security.policy=RmiServer.policy CalculatorServer
追问
你的意思是要运行注册器并把服务器端程序跑起来,但是我已经这么做了,我怀疑是问题出在了服务器程序和客户程序的URL上,因为我在同一台机器上都用默认的rmi://localhost:1099时是可以正常连接并调用方法的,但是只要把客户程序改为rmi://“当前IP”:1099就连接不通开始报错了,和图上的错误一样,被拒绝连接IP,也不知道是哪儿的问题,帮忙想想办法吧?谢谢啦!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
服务端启动了没?
另外注意一下防火墙拦截
另外注意一下防火墙拦截
更多追问追答
追问
服务器端已经正常启动了,服务器端和客户端程序放在同一台机器上并且把客户端程序的URL设为localhost:1099时可以正常连接调用方法,但是只要把客户端URL改变为当前机器的IP地址就连不上了,然后把客户端程序移动到另一台机器上也连接不了并且报同样的错误,防火墙拦截这个倒是没考虑到,但是应该怎么设置呢?本人对这方面了解不深,还望多多指教~谢谢啦
追答
你访问的机器 IP是否填写正确,比如自身局域网的IP和公网的IP不一样。
如果你是用公网IP访问,那确认一下这个IP是不是动态IP而无法被访问(比如你在家用拨号上网一样,那个IP是动态共享的,无法直接访问到你的机器 。所以要用局域网IP)
服务器和客户端先保证在同一局域网进行测试,可以先关闭防火墙.
如果你不懂怎么设置防火墙,可以搜索一下
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询