我有以下接口(interface)。
interface Server {
void subscribe(in Client client);
};
interface Client {
void ping();
void pong();
};
初始化时,客户端将连接到服务器并调用 subscribe(this)。 然后服务器会不时地调用客户端上的 ping() 或 pong() 方法。但是,如果客户端位于 NAT 后面,则此方法将不起作用。此问题有哪些可能的解决方法?
是否可以利用客户端创建的 TCP 连接来调用服务器 -> 客户端? 请指教。
最佳答案
了解您的 ORB 是否支持双向 IIOP,这可以解决服务器->客户端回调的 NAT/防火墙问题。
以下是一些支持它的 ORB:
OmniORB - http://omniorb.sourceforge.net/omni40/omniORB/omniORB008.html#sec:bidir
Orbix - http://documentation.progress.com/output/Iona/orbix/migration/html/InteropCx3.html
Visibroker - http://www.albany.edu/dept/csi/csi518/fall03/inprise/vbroker/doc/books/vbj/vbj45/programmers-guide/bidir.html
关于corba - 如何在 NAT 后面实现 CORBA 客户端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14980848/