首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用dns地址的Java绑定问题

使用dns地址的Java绑定问题
EN

Stack Overflow用户
提问于 2013-07-22 15:18:27
回答 2查看 1.8K关注 0票数 1

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

我这样做绑定操作:

代码语言:javascript
复制
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服务(我确信它与套接字一起使用)。

编辑:

实际上,我在我的服务器上做了这样的事情:

代码语言:javascript
复制
 //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);

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

代码语言:javascript
复制
 IRemoteServer remote = (IRemoteServer)Naming.lookup("rmi://hostname.dyndns.org:2367/MultiServer");

在此指令之后,我通常使用远程接口公开的方法。

但是,按照以下步骤,我将收到以下错误消息:

代码语言:javascript
复制
Connection refused to host: **SERVER_INTERNAL_IP**; nested exception is: 
java.net.ConnectException: Connection timed out: connect

在解析dns主机地址时,客户端怎么可能指向服务器的内部ip地址,而不是其真正的ip地址?

EDIT2:我注意到客户端能够查找服务器,但它不能调用其远程方法,而异常是在客户端尝试调用远程方法时引发的。

EN

回答 2

Stack Overflow用户

发布于 2013-07-22 21:43:17

在绑定、重新绑定或取消绑定时,只需使用“localhost”。无论如何,您只能绑定到本地主机中的注册表,那么为什么还要使用其他东西呢?

但是,默认情况下,主机的IP地址嵌入到存根中,如果IP地址发生更改,存根将无法神奇地更改。您必须通过java.rmi.server.hostname.将'dyndns‘主机名设置为存根

票数 0
EN

Stack Overflow用户

发布于 2015-06-06 20:29:18

尝试使用以下方式运行服务器:

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17791300

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档