2015-06-19 21 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