永发信息网

关于RMI局域网连接正常公网无法连接的问题

答案:1  悬赏:50  手机版
解决时间 2021-04-08 05:25
  • 提问者网友:wodetian
  • 2021-04-07 08:00
关于RMI局域网连接正常公网无法连接的问题
最佳答案
  • 五星知识达人网友:西风乍起
  • 2021-04-07 09:10
应该就是防火墙的问题,RMI穿越防火墙是有问题的。
RMI除了注册端口外,其通信端口是服务器随机产生的,因此不容易穿过防火墙。解决方法,自定义一个RMISocketFactory,指定固定的通信端口,然后使用setSocketFactory(RMISocketFactory fac)设置。

import java.rmi.server.*;
import java.io.*;
import java.net.*;
public class SMRMISocket extends RMISocketFactory {
public Socket createSocket(String host, int port)
throws IOException{
return new Socket(host,port);
}
public ServerSocket createServerSocket(int port)
throws IOException {
if (port == 0)
port = 2098;//不指定就随机
return new ServerSocket(port);
}
}

这样防火墙就需要开启通信端口2098和注册端口7112

补充:

能把服务器端注册部分的代码贴一下吗?setSocketFactory(RMISocketFactory fac)必须放到最前面
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯