|
|
1
4
您可以使用自定义RMI套接字工厂来实现这一点。 套接字工厂为RMI创建用于客户端和服务器端的套接字,因此,如果您编写自己的套接字,则可以完全控制所使用的端口。客户机工厂在服务器上创建,序列化,然后发送到客户机,这非常整洁。 |
|
|
2
2
这不需要套接字工厂,甚至不需要多个端口。如果您是从服务器JVM启动注册表,那么您可以使用端口1099进行所有操作,实际上,默认情况下会发生这种情况。如果您根本没有启动注册表(如在客户端回调对象中),则可以在导出它时提供端口1099。
|
|
|
3
1
接下来是更长的回答:
我们对回调问题的解决方案基本上有三个部分。第一个是对象包装,它需要能够指定它用于客户端到服务器的连接,而不是用于服务器到客户端的回调。使用
因此,第一个参数指定对象期望请求的部分,而第二个和第三个参数指定将在驱动此远程对象的连接的任一端使用的套接字工厂。
请注意,上面的服务器套接字工厂确保此工厂只使用您以前指定的端口。客户端套接字工厂必须与相应的套接字工厂配对(否则您将永远无法连接)。
因此,唯一可以迫使双向连接保持在同一组端口上的方法是使用一些逻辑来识别您正在回叫客户端。在这种情况下,只需确保远程对象的工厂方法调用RemoteObjectWrapper构造函数,并将回调参数设置为true。 |
|
4
0
我在实现RMI服务器/客户端体系结构以及客户端回调时遇到了各种问题。我的场景是服务器和客户端都在防火墙/NAT后面。最后,我得到了一个完全有效的实现。以下是我做的主要事情: 在防火墙/路由器/本地服务器PC上打开端口6620。 在防火墙/路由器/本地服务器PC上打开端口1099。 在路由器/NAT上,将端口1099上的传入连接重定向到192.168.1.10:1099
客户端,本地IP:10.0.1.123公共(互联网)IP 70.70.70.20
在实际程序中:
希望这有帮助。 伊拉克利斯 |
|
|
user29759326 · 如何返回递归函数中的最后一个值? 1 年前 |
|
|
malife89 · 将java中的字符串读取为正确的日期格式 1 年前 |
|
|
Tim · 在java中,有没有更快的方法将字节数组写入文件? 1 年前 |
|
|
rudraraj · java中未声明最终变量 1 年前 |
|
|
Bala Ji · 以下BFS的实施效率如何? 1 年前 |