java rmi连接远程主机问题 70

问题是这样的,通过rmi来实现分布式通信,用的是20112端口,在本地实现的时候是没问题的,但是部署到主机(亚马逊云机,供外访问ip:54.**.72.52,内部IP是1... 问题是这样的,通过rmi来实现分布式通信,用的是20112端口,在本地实现的时候是没问题的,但是部署到主机(亚马逊云机,供外访问ip:54.**.72.52,内部IP是10.0.3.9,有防火墙,但是已经打开20112和20110端口),就不能访问了,错误截图

(我奇怪:外部ip既然能连上,怎么会卡到10.0.3.9那里啊)
然后我在网上找答案:他们说20112端口是rmi通信端口,而数据发送还需要一个端口,需重写一个类,然后我就写了:

按照网上的说法:指定20110来设置固定的端口来穿越防火墙,但是我设置之后,在本地测试的时候发现打印的log根本就没使用这个20110,还是rmi的我指定的那个端口20112,这是为什么,难道在一个网段里面不需要另起端口,还是我的理解有错误?
下面是我的服务端和客户端的连接代码
server:

(用Naming绑定的时候出错,就用registry来绑定了)
client:

如果放到局域网通信没问题,那个服务器是windows系统,我试了
system.setproperty("java.rmi.server.hostname","54.**.72.52")
重写RmiSocketFactory的方法
到现在都不行,只要放到服务器就报错,我在网上看到说要设置 host文件,我也试了,好像没效果,况且他们说的太笼统,我把服务器上的host文件也粘出来吧,大家看看是哪儿的问题,
# 127.0.0.1 localhost
我把前面的注释去掉也不行,各位看看是哪儿的问题,如果是host文件的事,那么应该怎么改,谢~!
最后自己解决了,原因是:如果自定义数据端口穿越防火墙的时候,需要设置RmiSocetFactory.setSocketFactory(new MyRMISocket()),这个设置必须在UpdateGateway gatway1=new UpdateGatwayImpl()这句代码前面才行,因为在实现接口的时候就要用到serversocket,所以最后是顺序的问题。
展开
 我来答
jyg0124
2014-04-01 · TA获得超过321个赞
知道小有建树答主
回答量:187
采纳率:0%
帮助的人:71.1万
展开全部
你绑定的ip是什么,好像只能访问到那个IP,
你发布的RMI,应该是绑定对应网卡的
yjtjhso
2014-04-04 · TA获得超过234个赞
知道答主
回答量:120
采纳率:50%
帮助的人:66.6万
展开全部
查一下是不是被管理的服务器所在的网络部允许IP连接
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
时代小超人
2014-12-25
知道答主
回答量:24
采纳率:0%
帮助的人:8万
展开全部
太好了 解决我的大问题 非常感谢!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式