设置我的服务器以允许远程用户连接到我的Java程序
我的程序是一个使用RMI允许用户连接到中央服务器的游戏。这个游戏在我家庭网络中的电脑上运行良好。我希望网络之外的远程用户能够连接到服务器 根据一个类似线程的建议,我设置了一个no-ip.com帐户,将一个域映射到我的游戏服务器,这样我的计算机就可以公开访问 我更改了代码以从以下位置获取类存根:设置我的服务器以允许远程用户连接到我的Java程序,java,dns,ip,rmi,Java,Dns,Ip,Rmi,我的程序是一个使用RMI允许用户连接到中央服务器的游戏。这个游戏在我家庭网络中的电脑上运行良好。我希望网络之外的远程用户能够连接到服务器 根据一个类似线程的建议,我设置了一个no-ip.com帐户,将一个域映射到我的游戏服务器,这样我的计算机就可以公开访问 我更改了代码以从以下位置获取类存根: Registry registry = LocateRegistry.getRegistry("10.10.10.105"); /* 10.10.10.105 is my local address a
Registry registry = LocateRegistry.getRegistry("10.10.10.105");
/* 10.10.10.105 is my local address and this works fine on my home network */
致:
但是,这段新代码得到一个java.rmi.ConnectException:连接被拒绝承载:
错误。我使用了canyouseeme.org上的端口检查器工具,发现我的端口1099已打开。我不确定我还需要做什么才能让我的程序可以访问
顺便说一句:我正在将NetBeans IDE与Glassfish一起使用
虽然打开端口1099是一个良好的开端,但这只允许您联系RMI注册表。实际RMI导出的对象将在不同的端口(默认情况下为任意端口)上可用 您有两个选择: 1) 将路由器中的服务器设置为DMZ(意味着所有传入连接都将路由到该服务器)。但要注意服务器的安全性 2) 为对象设置特定端口-
PS-Wireshark等数据包捕获工具通常有助于诊断此类问题。我想我可能已经找到了问题的答案。我的设置看起来像ADSL调制解调器->路由器->机器
尽管我将端口从DSL调制解调器转发到路由器,然后再转发到机器,但DSL调制解调器完全忽略了其端口转发设置。一旦我将DSL调制解调器设置为网桥模式,只允许路由器处理端口转发,似乎就解决了问题。您的NAT路由器是否配置为将请求转发到您的内部机器?不,我不这么认为。我对路由的概念很陌生,所以我不熟悉这个概念。你能给我解释一下或者给我介绍一个好的资源吗?我有一个LinkSys WRT54G路由器和一个Windstream电缆调制解调器,我可以连接并编辑设置。编辑:你是说港口转运吗?在这种情况下,是的,我将端口1099转发到相关机器。哈哈,哇,问一下,你就会收到:--忽略页面上的所有内容,除了屏幕截图。:)谢谢你的链接,但我相信我已经正确设置了端口。我在防火墙和调制解调器上打开了端口80、443、4125和1099,并通过路由器转发到服务器。是否
mychosenhostname.no ip.org
解析到客户端计算机上的正确ip地址?您能否从客户端计算机telnet mychosenhostname.no-ip.org 1099
或nc mychosenhostname.no-ip.org 1099
,以确保它可以遍历您的NAT?我的操作系统是XP home edition吗?no-ip.com网站没有说它需要一个服务器操作系统才能工作,但可能我的操作系统不允许我尝试的操作。如果OP使用LocateRegistry.createRegistry()
他可以使用端口1099处理所有事情。
Registry registry = LocateRegistry.getRegistry("mychosenhostname.no-ip.org");
/* mychosenhostname.no-ip.org is the redirecting domain that I received from no-ip */