----问个ACE的实现问题
服务端的功能函数我已经写好了,但我不知道服务端的main函数怎么写?服务端有三个类,因此要在main函数中实现三个servant,还有,我这里面要用到NameService,因此,main函数中要用到Cosnaming.请高手能帮我举个列子:
就举这个*.idl中的列子吧,呵呵(把服务端和客户端的main都写出来,还有要用到NameService):
//
module Test
{
/// A very simple interface
interface One
{
/// Return a simple string
string get_string ();
};
interface Two
{
string get_string ();
};
interface Three
{
string get_string ();
};
};
谢谢了,也可以直接找我联系,QQ:345931986 可以按照普通console工程对待,直接用ACE_TMAIN代替原来的main()
回复 #2 winston 的帖子
呵呵,能给个具体的实现不?我老是弄不起来,反正这个列子也简单啊。哈哈回复 #1 longwenbiao 的帖子
CORBA::ORB_var orb = CORBA::ORB_init(argc,argv,"");CORBA::Object_var poa_object = orb->resolve_initial_references("RootPOA");
PortableServer::POA_var poa = PortableServer::POA::_narrow(poa_object.in());
PortableServer::POAManager_var poa_manager = poa->the_POAManager();
poa_manager->activate();
//Get the Naming Context reference
CORBA::Object_var naming_context_object= orb->resolve_initial_references("NameService");
CosNaming::NamingContext_var naming_context = CosNaming::NamingContext::_narrow(naming_context_object.in());
Servant servant();
poa->activate_object(&servant);
CORBA::Object_var objservant = servant._this();
CosNaming::Name nameservant;
nameservant.length (1);
nameservant.id = CORBA::string_dup ("servant");
// call rebind instead bind
naming_context->rebind(servant, objservant.in());
回复 #4 evangel 的帖子
呵呵,你跑题了?你可以动手试试,当你servant多了,就出问题了,一个没问题。你可以把我这个列子实现下吗?谢谢了
回复 #2 winston 的帖子
呵呵,高手,能帮下忙不? 从Servant的定义得知每个Servant都可以由IOR唯一确定,也就是说IOR和Servant是一对一的关系,Naming Service提供的只是助记符解析服务。回复 #7 evangel 的帖子
那是不是CosNaming也和Servant一一对应?回复 #8 longwenbiao 的帖子
Naming Service相当于一个功能函数,你可以随时调用,但是你启动S端能有几个IOR?回复 #9 evangel 的帖子
呵呵,问题已经解决,老大说的对,servant和IOR一一对应,需要几个servant,就建立几个CosNaming.:lol
页:
[1]