2015-06-19 51 views
0

我試圖連接到服務器,但無法這樣做。 以下是代碼片段,服務器運行於3.204.24.98:6090。corba:無法連接到服務器

char* ior = "corbaloc:iiop:3.204.24.98:6090"; 

cout<<"controllers ior : "<<ior; 

//CORBA::Object_var obj = orb -> string_to_object(ior); 
Hello_var hello = Hello::_narrow(orb->string_to_object(ior)); 

有什麼額外的,我在這裏失蹤。 任何建議都會有很大的幫助。

感謝

+0

當使用IDL到C++映射你需要的CORBA :: Object_var作爲中間變量,不它在運行時得到內存泄漏 –

回答

1

你會錯過它告訴哪個對象要到達服務器的ORB的對象鍵。檢查IORTable支持,您的服務器可以使用客戶端可以使用的簡單名稱使對象可用。隨着C++ 11,這將是在服務器代碼

std::string ior = orb->object_to_string (server_reference); 
    auto ior_table_obj = orb->resolve_initial_references("IORTable"); 
    auto tmp = IDL::traits<IORTable::Table>::narrow (ior_table_obj); 
    ior_table->bind("Hello", ior); 

然後,客戶機可以使用

auto tmp = orb->string_to_object("corbaloc:iiop:3.204.24.98:6090/Hello"); 
    auto hello = IDL::traits<Test::Hello>::narrow (tmp); 
+0

非常感謝它的工作 – anonymous