Java RMI与wifi和拨号互联网的连接

Java RMI与wifi和拨号互联网的连接,java,rmi,distributed-computing,Java,Rmi,Distributed Computing,我使用rmi创建了一个简单的数据库应用程序。它与我的本地无线网络配合得很好。但是现在我想通过互联网将我的客户机连接到服务器。我知道,这可以通过在路由器中设置端口转发来实现。但我希望它能在任何使用wifi连接和拨号连接到互联网的计算机上工作 连接等。如何做到这一点? 在这里写什么?Naming.lookup rmi://?????????????; 由于我是java新手,请用一个简单的代码示例给我一个详细的答案。 提前感谢我希望您对Java RMI概念的理解有误。具有讽刺意味的是,几天前我也在想同

我使用rmi创建了一个简单的数据库应用程序。它与我的本地无线网络配合得很好。但是现在我想通过互联网将我的客户机连接到服务器。我知道,这可以通过在路由器中设置端口转发来实现。但我希望它能在任何使用wifi连接和拨号连接到互联网的计算机上工作 连接等。如何做到这一点? 在这里写什么?Naming.lookup rmi://?????????????; 由于我是java新手,请用一个简单的代码示例给我一个详细的答案。
提前感谢

我希望您对Java RMI概念的理解有误。具有讽刺意味的是,几天前我也在想同样的事情,只是我在想连接我的内部网络

JavaRMI中可以使用两种类型的类

远程类是其实例可以远程使用的类。物件 可以通过两种不同的方式引用此类的: 1.在构建对象的地址空间中,该对象是一个普通对象,可以像任何其他对象一样使用。 2.在其他地址空间中,可以使用对象句柄引用对象。虽然在如何使用 与对象相比,对象句柄在大多数情况下是可以使用的 对象的处理方式与普通对象相同

可序列化类是其实例可以从一个类复制的类 地址空间到另一个地址空间。将创建可序列化类的实例 调用可序列化对象。换句话说,可序列化对象是 可以编组的人

所以,假设您讨论的是不同SYSTEMSERVER上的远程类,那么下面是您问题的答案

远程对象的名称包括以下信息:

运行的计算机的Internet名称或地址 正在向其注册远程对象的对象注册表。如果 对象注册表与当前运行的计算机在同一台计算机上运行 发出请求后,可以省略机器的名称

对象注册表正在侦听的端口。如果对象 注册表正在侦听默认端口1099,则此端口不可用 必须包含在名称中

对象注册表中远程对象的本地名称

远程对象的URL使用通常的主机、端口和名称指定:

rmi://host:port/name

主机=注册表的主机名默认为当前主机 端口=注册表的端口号默认为注册表端口号 name=远程对象的名称

假设您的代码位于主机名为XYZ.edu/home/classes的服务器上,您可以为服务器中的abc.java类提供服务器的DNS/IP地址,并包括类文件的位置、端口号=1099默认值和远程对象的名称=abc。通过这种方式,可以从不同的机器调用远程对象。此外,您还需要将整个服务器代码保留在Internet地址上,以便客户端可以从Internet访问这些代码。无法访问计算机中的脱机代码。那么只有它能发生

以下是示例客户端程序:

/**
* Client program for the "Hello, world!" example.
* @param argv The command line arguments which are ignored.
*/
public static void main (String[] argv) {
try {
  HelloInterface hello = 
    (HelloInterface) Naming.lookup ("//ortles.ccs.neu.edu/Hello");   //see here the address of the server hosting the Server file,you can omit port number,it'll take default port 1099.
  System.out.println (hello.say());
 } catch (Exception e) {
  System.out.println ("HelloClient exception: " + e);
 }
}

你的问题不清楚,但我假设英语不是你的第一语言。JavaRMI通常处于启用状态。既然RMI已启用,那么您的问题就变成了“如何”了?我建议您改用http调用器或hessian而不是RMI。如果您使用的是spring,它非常简单。Http invoker在80或443端口上通过Http/https工作,通常不需要在服务器和客户端上进行额外的防火墙设置。根据您的说法,无法通过internet进行连接,但我已使用我的无线网络进行连接,其中服务器在一台计算机上运行,客户端在另一台计算机上运行,那么,为什么不能通过互联网实现呢?最后,互联网是一个网络@用户3641302你误解了我的答案,我没有这么说。当然,你可以通过互联网来实现。但是,您需要让服务器文件驻留在服务器IP地址上,然后可以使用远程对象作为客户端来连接到它们。你所取得的成就是,我已经提到,我也尝试过同样的方法,并且取得了成功。您需要连接服务器IP地址才能访问要绑定和重新绑定的源文件。请把答案再说一遍!显然,您需要在某个IP地址上托管文件,这并不是说您可以直接连接。您是如何将其连接到您的个人网络的?您是如何使用WiFi设置将其连接到本地服务器的?请解释,这样我就可以向你解释剩下的事情,并澄清你的疑问!!!我在客户端应用程序中使用了运行服务器的计算机的ip地址,rmi://ip 服务器计算机地址:1099/Hello;问题是当我使用无法连接的服务器计算机的公共ip地址时。正如我所说的,我对编程很陌生,所以请给予我足够的帮助
给我一些详细的答案。tnx我得到的异常是java.rmi.ConnectException:连接被拒绝到主机:ip地址。嵌套的异常是ava.net.ConnectException:连接超时:连接。