gpt4 book ai didi

java RMI 连接到服务器

转载 作者:搜寻专家 更新时间:2023-11-01 02:56:16 27 4
gpt4 key购买 nike

我有一个非常简单的 rmi 客户端/服务器应用程序。虽然我不使用“rmiregistry”应用程序,但我使用它来创建服务器:

server = new RemoteServer();
registry = LocateRegistry.createRegistry(PORT);
registry.bind("RemoteServer", server);

客户端部分是:

registry = LocateRegistry.getRegistry(IPADDRESS, PORT);
remote = (IRemoteServer) registry.lookup("RemoteServer");

这是一个令人着迷的问题:当服务器和客户端都在我的(私有(private))本地网络中运行时,应用程序可以完美运行。一旦我将服务器放在公共(public)服务器上,应用程序就会挂起一分钟,然后出现以下错误:

java.rmi.ServerException: RemoteException occurred in server thread; nested exception is: 
java.rmi.ConnectException: Connection refused to host: 192.168.x.y; nested exception is:
java.net.ConnectException: Connection timed out: connect
at sun.rmi.server.UnicastServerRef.dispatch(Unknown Source)
at sun.rmi.transport.Transport$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at sun.rmi.transport.Transport.serviceCall(Unknown Source)
at sun.rmi.transport.tcp.TCPTransport.handleMessages(Unknown Source)
at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(Unknown Source ... (the rest is truncated)

我认为关键是客户端(在我的专用网络上运行)无法连接到我自己(我的地址是 192.168.x.y,其中 x.y 是其他一些数字,但真正的错误消息显示我的此处列出的 IP 地址)

如果我在公共(public)互联网上关闭 rmi 服务器,我会立即收到“连接被拒绝托管:a.b.c.d”)消息,所以我知道服务器端至少有一些东西在工作。

有什么建议吗?

编辑:只是为了更清楚一点:192.168.x.y 是客户端地址,a.b.c.d 是服务器地址。堆栈跟踪显示客户端无法连接到客户端。

最佳答案

尝试使用此参数为虚拟机运行服务器:

-Djava.rmi.server.hostname=hostname_of_the_server

关于java RMI 连接到服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/936119/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com