【发布时间】:2012-01-25 09:25:57
【问题描述】:
有没有办法在RMI期间同时知道客户端和服务器的端口号?
在RMI期间向客户端返回结果时,下一次客户端请求结果时,客户端和服务器之间的会话是否会与上次相同,当服务器在返回第一个结果后一直在运行时还是创建了一个新端口?
例如:
// call to a remote method add
addServerIntf.add(d1,d2)
// after this call i get the added result
// again call the add method by again starting the client
addServerIntf.add(d1,d2)
// I get the result back as usual
在两次不同的调用中,客户端和服务器的端口号是否保持不变?
我的客户端程序在输入类似 java AddClient localhost 100 200 之类的命令后退出服务器上的方法返回300,客户端退出。下次我用 java AddClient localhost 19 100 再次启动我的客户端。现在请求将从与之前发送的相同端口发送,服务器会在同一端口接收请求吗?或者情况和我刚才写的不一样?
【问题讨论】:
-
我觉得你的问题不是很清楚。如果您将远程对象绑定到某个端口,它将在那里可用并且不会移动到其他端口。您能否展示一些表明您的问题或澄清您的问题的代码?
-
服务器端口当然不会改变。 OP正在谈论客户端的端口。所以问题是多个 RMI 调用是否建立到服务器的新连接(导致不同的客户端端口)。
-
我认为您误解了套接字的一般工作方式。一旦建立了端点,端口就变得无关紧要了。
-
@Chris Dennett 告诉你,我的客户端程序在输入
java AddClient localhost 100 200之类的命令后退出,服务器上的方法返回300,客户端退出。下次我用java AddClient localhost 19 100再次启动我的客户。现在请求将从与之前发送的相同端口发送,服务器是否会在同一端口上接收请求?还是情况和我刚才写的不一样? -
由于程序退出,我怀疑rmi客户端套接字也关闭了。然后,对您的程序的第二次调用将创建一个新的客户端套接字,它不能保证再次使用相同的端口,因为这是由操作系统控制的。但是我不知道如何获取客户端套接字实例以简单地输出端口。
标签: java rmi port-number