2013-02-20 48 views
2

我有以下接口。如何在NAT後面實現CORBA客戶端

interface Server { 
    void subscribe(in Client client); 
}; 

interface Client { 
    void ping(); 
    void pong(); 
}; 

初始化時,客戶端將連接到服務器並調用訂閱(this)。 然後服務器會在客戶端調用ping()或pong()方法。但是,如果客戶端駐留在NAT後面,這將不起作用。這個問題有什麼可能的解決方法?

是否有可能利用客戶端創建的TCP連接爲呼叫服務器 - >客戶端? 請指教。

回答

2

找出您的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

+0

TAO還支持雙向,也有一些特殊的標誌來覆蓋主機名/端口放入IOR – 2013-02-21 10:27:26

+0

我的ORB服務器端是TAO,這個解決方案正是我所需要的。非常感謝你。 – user2091330 2013-02-21 15:16:19

+0

隨時接受答案:) – 2013-02-21 15:25:01