:oops: 小弟这些天在做一个RMI的DEMO。
请问各位大哥。怎样取得客户端的端口号。
取得客户端的ip地址很简单。UnicastRemoteObject类中 getClientHost();可以做到。
请问客户端端口咋弄咧。
抓狂了,再搞不定老大要发飙了.. :cry:
补充: 各位,提供个方向就可以。或者给个链接吧 :wink:
:oops: 小弟这些天在做一个RMI的DEMO。
请问各位大哥。怎样取得客户端的端口号。
取得客户端的ip地址很简单。UnicastRemoteObject类中 getClientHost();可以做到。
请问客户端端口咋弄咧。
抓狂了,再搞不定老大要发飙了.. :cry:
补充: 各位,提供个方向就可以。或者给个链接吧 :wink:
RMI 一般有两个端口,一个是服务端口(默认是 1099),一个是数据端口(默认随机生成),可以将这两个端口都固定下面就不要很麻烦地获取了,要再有其他的就真不知道了。
[code="java"] public static void main(String[] args)throws Exception {
// 启动 rmi 服务,端口为1099
LocateRegistry.createRegistry(1099);
//
RMISocketFactory.setSocketFactory(new CustomerSocketFactory());
// 在 rmi 中注册一个对象
DbAdapter dbadapter = new DbAdapterImpl();
Naming.rebind("dbadapter", dbadapter);
}[/code]
[code="java"]public class CustomerSocketFactory extends RMISocketFactory{
// 提供一个固定的数据端口
public static final int data_port = 10990;
@Override
public ServerSocket createServerSocket(int port) throws IOException {
if (port == 0){
port = data_port;
}
return new ServerSocket(port);
}
@Override
public Socket createSocket(String host, int port) throws IOException {
return new Socket(host, port);
}
}[/code]