设置我的服务器以允许远程用户连接到我的Java程序

设置我的服务器以允许远程用户连接到我的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

我的程序是一个使用RMI允许用户连接到中央服务器的游戏。这个游戏在我家庭网络中的电脑上运行良好。我希望网络之外的远程用户能够连接到服务器

根据一个类似线程的建议,我设置了一个no-ip.com帐户,将一个域映射到我的游戏服务器,这样我的计算机就可以公开访问

我更改了代码以从以下位置获取类存根:

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一起使用

  • 检查服务器上的软件防火墙。(如果你还没有…)

  • 检查您试图连接的机器上的端口,以及它的防火墙、路由器等

  • 如果您完全确定一切正常,请联系您的ISP,询问他们是否正在阻止端口


  • 虽然打开端口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 */