gpt4 book ai didi

Java RMI与dns地址绑定(bind)问题

转载 作者:行者123 更新时间:2023-12-01 04:32:44 25 4
gpt4 key购买 nike

我正在编写一个使用 RMI 的客户端-服务器应用程序。我使用 dyndns 来获得一个不可变的地址,我可以在该地址上接受客户端的连接。但是我在服务器中执行绑定(bind)操作时遇到一些问题,因为我收到此错误:连接被拒绝:连接

我是这样进行绑定(bind)操作的:

MultiServer multi = new MultiServer(); // creates an instance of the remote object
LocateRegistry.createRegistry(port);
Naming.bind("//my_host_address.dyndns.org:my_port/MultiServer", multi);

我需要设置什么?我已经打开了我使用的端口并正确配置了 dyndns 服务(我确信这一点,因为我将它与套接字一起使用)。

编辑:

实际上我在我的服务器中做了类似的事情:

 //other code
MultiServer multi = new MultiServer();
System.setProperty("java.rmi.server.hostname", "hostname.dyndns.org");
LocateRegistry.createRegistry(2367); // the server will listen on port 2367
Naming.bind("//localhost:2367/MultiServer", multi);

够了吗?或者我必须向客户指定其他信息?在客户端我只需这样做:

 IRemoteServer remote = (IRemoteServer)Naming.lookup("rmi://hostname.dyndns.org:2367/MultiServer");

在这条指令之后,我通常使用远程接口(interface)公开的方法。

但是按照这些步骤,我收到此错误消息:

Connection refused to host: **SERVER_INTERNAL_IP**; nested exception is: 
java.net.ConnectException: Connection timed out: connect

客户端在解析dns主机地址时,如何可能指向服务器的内部IP地址而不是其真实IP?

编辑2:我注意到客户端能够查找服务器,但无法调用其远程方法,并且当我尝试从客户端调用远程方法时,会引发异常。

最佳答案

尝试使用以下命令运行服务器:

java -Djava.rmi.server.hostname=yourserver.dyndns.org -Djava.security.policy=yourPolicy.txt -cp 'yourjar.jar' yourServerClass

关于Java RMI与dns地址绑定(bind)问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17791300/

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