您当前的位置: 首页 > 

顺其自然~

暂无认证

  • 1浏览

    0关注

    1317博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

ICE的proxy使用

顺其自然~ 发布时间:2020-04-24 23:40:22 ,浏览量:1

1、在ICE的客户端获取代理的方式如下:    A、Ice::ObjectPrx p = communicator->stirngToProxy("MyProxy:tcp -h 10.0.0.1 -p 12345");

  注:MyProxy:tcp -h 10.0.0.1 -p 12345   远程服务单元名称:协议 -h 主机 -p 端口号    B、Ice::ObjectPrx p = communicator->propertyToProxy("MyProxy");        在配置文件中配置MyProxy=MyProxy:tcp -h 10.0.0.1 -p 12345    C、Ice::ObjectPrx p = myproxy.ice_oneway();    D、MyProxyPrx p = myservant->op();   (slice: MyProxy * op())2、每个proxy对象都需要绑定一个远地的端点信息,其字符串的端点格式如下:    identity -f facet -t -o -O -d -D -s @ adapter_id : endpoints        其中endpoints的语法如下:    tcp -h host -p port -t timeout -z    udp -v major.minor -e major.minor -h host -p port -z --ttl TTL --interface INTF    ssl -h host -p port -t timeout -z    opaque -t type -v value3、注意在proxy上有一些工厂方法能够clone出来一个新的proxy,但是新的proxy会根据工厂方法过滤掉一些端点信息    ice_secure  只使用ssl端点信息    ice_batchDatagram、ice_datagram 只使用udp端点信息    ice_oneway、ice_twoway、ice_batchOneway 使用tcp和ssl端点信息4、可以设置ICE的proxy的默认属性,例如:Ice.Default.Secure = 0    也可以强制ICE的proxy的属性,例如:Ice.Override.Secure = 15、proxy的消息调用过程中,除了可以传递参数外,还可以传递上下文信息,客户端代码例如:    Ice::Context ctx;    ctx["Property1"] = "value1";    ctx["Property2"] = "value2";        MyProxy->op(ctx);    由于上下文信息仅仅能够传递字符串信息,无强制类型限制,在请求的编码和解码上也存在一定的效率问题,因此不是    非得使用上下文,尽量不要使用        服务器端代码如下:    void MyServerI::op(const Ice::Current& c)    {       Ice::Context::const_iterator l = c.ctx.find("Property1");  if (l != c.ctx.end() && l->second == "value1")  {    }    l = c.ctx.find("Property2");  if (l != c.ctx.end() && l->second == "value2")  {    }    }6、 使用communicator的隐式上下文传递,通过如下方法获取communicator上的隐式上下文:    Ice::ImplicitContextPtr Ice::CommunicatorI::getImplicitContext() const        然后通过隐式上下文的接口设置communicator上的隐式上下文,这样导致基于该communicator的所有代理请求都会携带设置的上下文    local interface ImplicitContext    {        Context getContext();        void setContext(Context newContext);        string get(string key);        string put(string key, string value);        string remove(string key);        bool containsKey(string key);    };7、proxy上的超时设置,可以通过如下方法指定proxy上的请求超时时间    A、Ice::ObjectPrx MyTimeOutProxy = MyProxy.ice_timeout(10000);   10秒超时    B、通过代理的端点指定:ident:tcp -h somehost -t 5000:ssl -h somehost -t 5000    C、通过配置属性设置:Ice.Override.ConnectTimeOut、Ice.Override.TimeOut

关注
打赏
1662339380
查看更多评论
立即登录/注册

微信扫码登录

0.0412s