本人初学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));
测试时服务器代码和客户端代码在两台机器上,但一连接就报错(如图),还望高手指点这到底是哪儿的问题~谢啦!
展开
 我来答
bd9006
2011-11-24 · TA获得超过2.5万个赞
知道大有可为答主
回答量:4.8万
采纳率:63%
帮助的人:1.6亿
展开全部
服务器端要运行一个服务的。

@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,也不知道是哪儿的问题,帮忙想想办法吧?谢谢啦!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
disskiss
2011-11-24 · 超过20用户采纳过TA的回答
知道答主
回答量:59
采纳率:0%
帮助的人:38.8万
展开全部
服务端启动了没?

另外注意一下防火墙拦截
更多追问追答
追问
服务器端已经正常启动了,服务器端和客户端程序放在同一台机器上并且把客户端程序的URL设为localhost:1099时可以正常连接调用方法,但是只要把客户端URL改变为当前机器的IP地址就连不上了,然后把客户端程序移动到另一台机器上也连接不了并且报同样的错误,防火墙拦截这个倒是没考虑到,但是应该怎么设置呢?本人对这方面了解不深,还望多多指教~谢谢啦
追答
你访问的机器 IP是否填写正确,比如自身局域网的IP和公网的IP不一样。 
如果你是用公网IP访问,那确认一下这个IP是不是动态IP而无法被访问(比如你在家用拨号上网一样,那个IP是动态共享的,无法直接访问到你的机器 。所以要用局域网IP)

服务器和客户端先保证在同一局域网进行测试,可以先关闭防火墙.
如果你不懂怎么设置防火墙,可以搜索一下
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式