锘??xml version="1.0" encoding="utf-8" standalone="yes"?>午夜日本精品,国产精品大片wwwwww,久久精品最新地址http://m.shnenglu.com/socketref/category/20676.htmlhttps://github.com/adoggiezh-cnMon, 19 Sep 2016 21:56:57 GMTMon, 19 Sep 2016 21:56:57 GMT60TCE 錛?灝忓瀷鐨凴PC閫氫俊寮曟搸搴?浠嬬粛http://m.shnenglu.com/socketref/archive/2016/09/18/214280.html鏀懼眮闃跨嫍 鏀懼眮闃跨嫍 Sun, 18 Sep 2016 08:03:00 GMThttp://m.shnenglu.com/socketref/archive/2016/09/18/214280.htmlhttp://m.shnenglu.com/socketref/comments/214280.htmlhttp://m.shnenglu.com/socketref/archive/2016/09/18/214280.html#Feedback0http://m.shnenglu.com/socketref/comments/commentRss/214280.htmlhttp://m.shnenglu.com/socketref/services/trackbacks/214280.htmltce鏄竴涓?鍏ㄦ爤鐨勪笢瑗匡紝騫朵笉鏄?protocalbuf錛屾垨鑰呮帴榪?thrift銆?鏀寔璇█: csharp,python,java,objc,javascript,actionscript,c++,鎴戞兂榪欎簺澶熶簡銆?
  闃呰鍏ㄦ枃

鏀懼眮闃跨嫍 2016-09-18 16:03 鍙戣〃璇勮
]]>
RPC demo: 瀹炵幇璁よ瘉鏈嶅姟鍣ㄦ帴鍙?/title><link>http://m.shnenglu.com/socketref/archive/2013/11/26/204441.html</link><dc:creator>鏀懼眮闃跨嫍 </dc:creator><author>鏀懼眮闃跨嫍 </author><pubDate>Mon, 25 Nov 2013 16:53:00 GMT</pubDate><guid>http://m.shnenglu.com/socketref/archive/2013/11/26/204441.html</guid><wfw:comment>http://m.shnenglu.com/socketref/comments/204441.html</wfw:comment><comments>http://m.shnenglu.com/socketref/archive/2013/11/26/204441.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.shnenglu.com/socketref/comments/commentRss/204441.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/socketref/services/trackbacks/204441.html</trackback:ping><description><![CDATA[鎺ュ彛瀹氫箟錛?nbsp;<br /><div style="background-color: #eeeeee; font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%; word-break: break-all;"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #008080; ">1</span> <span style="color: #0000FF; ">interface</span> IAuthServer{<br /><span style="color: #008080; ">2</span>     CallReturn_t userAuth(string user,string passwd,<span style="color: #0000FF; ">int</span> device_type);<br /><span style="color: #008080; ">3</span>     CallReturn_t registerUser(UserRegisterInfo_t reginfo); <span style="color: #008000; ">//</span><span style="color: #008000; "> tested</span><span style="color: #008000; "><br /></span><span style="color: #008080; ">4</span> <span style="color: #008000; "></span>};</div>瀹氫箟璁よ瘉鏈嶅姟鍣ㄦ帴鍙o紝userAuth()榪斿洖璁よ瘉鐢ㄦ埛鐨則oken<br /><br />鎺ュ彛鏈嶅姟瀹炵幇錛?nbsp;<br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #008080; "> 1</span> <span style="color: #0000FF; ">import</span> os,os.path,sys,struct,time,traceback,signal,threading,copy,base64<br /><span style="color: #008080; "> 2</span> <span style="color: #0000FF; ">import</span> datetime,base64<br /><span style="color: #008080; "> 3</span> <br /><span style="color: #008080; "> 4</span> <span style="color: #0000FF; ">from</span> datetime <span style="color: #0000FF; ">import</span> datetime<br /><span style="color: #008080; "> 5</span> <span style="color: #0000FF; ">from</span> base <span style="color: #0000FF; ">import</span> *<br /><span style="color: #008080; "> 6</span> <span style="color: #0000FF; ">import</span> tcelib as tce<br /><span style="color: #008080; "> 7</span> <span style="color: #0000FF; ">from</span> showbox <span style="color: #0000FF; ">import</span> *<br /><span style="color: #008080; "> 8</span> <span style="color: #0000FF; ">import</span> utils.misc<br /><span style="color: #008080; "> 9</span> <span style="color: #0000FF; ">import</span> utils.config<br /><span style="color: #008080; ">10</span> <span style="color: #0000FF; ">import</span> utils.cipher<br /><span style="color: #008080; ">11</span> <br /><span style="color: #008080; ">12</span> <br /><span style="color: #008080; ">13</span> os.environ.setdefault(<span style="color: #800000; ">"</span><span style="color: #800000; ">DJANGO_SETTINGS_MODULE</span><span style="color: #800000; ">"</span>, <span style="color: #800000; ">"</span><span style="color: #800000; ">database.showbox.showbox.settings</span><span style="color: #800000; ">"</span>)<br /><span style="color: #008080; ">14</span> <br /><span style="color: #008080; ">15</span> <span style="color: #0000FF; ">from</span> django.db <span style="color: #0000FF; ">import</span> connection<br /><span style="color: #008080; ">16</span> <span style="color: #0000FF; ">from</span> django.db.models <span style="color: #0000FF; ">import</span> Sum<br /><span style="color: #008080; ">17</span> <span style="color: #0000FF; ">from</span> django.db <span style="color: #0000FF; ">import</span> transaction<br /><span style="color: #008080; ">18</span> <span style="color: #008000; ">#</span><span style="color: #008000; "> import sns.core.models as cm</span><span style="color: #008000; "><br /></span><span style="color: #008080; ">19</span> <span style="color: #008000; "></span><span style="color: #0000FF; ">import</span> database.showbox.core.models as  core<br /><span style="color: #008080; ">20</span> <span style="color: #0000FF; ">import</span> database.showbox.nosql.models as nosql<br /><span style="color: #008080; ">21</span> <br /><span style="color: #008080; ">22</span> <span style="color: #0000FF; ">class</span> AuthServerImpl(IAuthServer):<br /><span style="color: #008080; ">23</span>     <span style="color: #0000FF; ">def</span> <span style="color: #800080; ">__init__</span>(self,app):<br /><span style="color: #008080; ">24</span>         IAuthServer.<span style="color: #800080; ">__init__</span>(self)<br /><span style="color: #008080; ">25</span>         self.app = app<br /><span style="color: #008080; ">26</span> <br /><span style="color: #008080; ">27</span>     <span style="color: #0000FF; ">def</span> userAuth(self, user, passwd, device_type, ctx):<br /><span style="color: #008080; ">28</span>         cr = CallReturn_t()<br /><span style="color: #008080; ">29</span>         <span style="color: #0000FF; ">try</span>:<br /><span style="color: #008080; ">30</span>             r = core.User.objects.get(user=user,passwd=passwd)<br /><span style="color: #008080; ">31</span>             userinfo = {<br /><span style="color: #008080; ">32</span>                 <span style="color: #800000; ">"</span><span style="color: #800000; ">id</span><span style="color: #800000; ">"</span>:r.id,<br /><span style="color: #008080; ">33</span>                 <span style="color: #800000; ">"</span><span style="color: #800000; ">user</span><span style="color: #800000; ">"</span>:user,<br /><span style="color: #008080; ">34</span>                 <span style="color: #800000; ">"</span><span style="color: #800000; ">name</span><span style="color: #800000; ">"</span>:r.name,<br /><span style="color: #008080; ">35</span>                 <span style="color: #800000; ">"</span><span style="color: #800000; ">login_time</span><span style="color: #800000; ">"</span>:int(time.time()),<br /><span style="color: #008080; ">36</span>                 <span style="color: #800000; ">"</span><span style="color: #800000; ">user_type</span><span style="color: #800000; ">"</span>:SnsConsts.Authorized_User<br /><span style="color: #008080; ">37</span>             }<br /><span style="color: #008080; ">38</span>             token = utils.cipher.encryptToken(userinfo)<br /><span style="color: #008080; ">39</span>             cr.value = token<br /><span style="color: #008080; ">40</span>         <span style="color: #0000FF; ">except</span>:<br /><span style="color: #008080; ">41</span>             <span style="color: #0000FF; ">print</span> traceback.format_exc()<br /><span style="color: #008080; ">42</span>             cr = CallReturn_Error()<br /><span style="color: #008080; ">43</span>         <span style="color: #0000FF; ">return</span> cr<br /><span style="color: #008080; ">44</span> <br /><span style="color: #008080; ">45</span>     <span style="color: #0000FF; ">def</span> registerUser(self, reginfo, ctx):<br /><span style="color: #008080; ">46</span>         <span style="color: #0000FF; ">return</span> IAuthServer.registerUser(self, reginfo, ctx)<br /><span style="color: #008080; ">47</span> <br /><span style="color: #008080; ">48</span> <br /><span style="color: #008080; ">49</span> <br /><span style="color: #008080; ">50</span> <span style="color: #0000FF; ">class</span> ServerApp:<br /><span style="color: #008080; ">51</span>     <span style="color: #0000FF; ">def</span> <span style="color: #800080; ">__init__</span>(self):<br /><span style="color: #008080; ">52</span>         <span style="color: #0000FF; ">pass</span><br /><span style="color: #008080; ">53</span> <br /><span style="color: #008080; ">54</span>     <span style="color: #0000FF; ">def</span> getConfig(self):<br /><span style="color: #008080; ">55</span>         <span style="color: #008000; ">#</span><span style="color: #008000; ">return self.app.getConfig()</span><span style="color: #008000; "><br /></span><span style="color: #008080; ">56</span> <span style="color: #008000; "></span>        <span style="color: #0000FF; ">pass</span><br /><span style="color: #008080; ">57</span> <br /><span style="color: #008080; ">58</span>     _handle = None<br /><span style="color: #008080; ">59</span>     @classmethod<br /><span style="color: #008080; ">60</span>     <span style="color: #0000FF; ">def</span> instance(cls):<br /><span style="color: #008080; ">61</span>         <span style="color: #0000FF; ">if</span> cls._handle == None:<br /><span style="color: #008080; ">62</span>             cls._handle = cls()<br /><span style="color: #008080; ">63</span>         <span style="color: #0000FF; ">return</span> cls._handle<br /><span style="color: #008080; ">64</span> <br /><span style="color: #008080; ">65</span>     <span style="color: #0000FF; ">def</span> run(self):<br /><span style="color: #008080; ">66</span>         tce.RpcCommunicator.instance().init(<span style="color: #800000; ">'</span><span style="color: #800000; ">authserver</span><span style="color: #800000; ">'</span>).initMessageRoute(<span style="color: #800000; ">'</span><span style="color: #800000; ">./services.xml</span><span style="color: #800000; ">'</span>)<br /><span style="color: #008080; ">67</span>         server = tce.RpcCommunicator.instance().currentServer().findEndPointByName(<span style="color: #800000; ">'</span><span style="color: #800000; ">mq_authserver</span><span style="color: #800000; ">'</span>).impl<br /><span style="color: #008080; ">68</span>         adapter  = tce.RpcAdapterEasyMQ.create(<span style="color: #800000; ">'</span><span style="color: #800000; ">server</span><span style="color: #800000; ">'</span>,server)<br /><span style="color: #008080; ">69</span>         <span style="color: #008000; ">#</span><span style="color: #008000; ">娌℃湁涓誨姩鍙戦佹秷鎭殑鎯呭艦</span><span style="color: #008000; "><br /></span><span style="color: #008080; ">70</span> <span style="color: #008000; "></span>        servant = AuthServerImpl(self)<br /><span style="color: #008080; ">71</span>         adapter.addServant(servant)<br /><span style="color: #008080; ">72</span>         tce.RpcCommunicator.instance().waitForShutdown()<br /><span style="color: #008080; ">73</span> <br /><span style="color: #008080; ">74</span> <span style="color: #0000FF; ">if</span> <span style="color: #800080; ">__name__</span> == <span style="color: #800000; ">'</span><span style="color: #800000; ">__main__</span><span style="color: #800000; ">'</span>:<br /><span style="color: #008080; ">75</span>     ServerApp.instance().run()</div><br />鏈嶅姟鍣ㄥ緢綆鍗曪紝瀹炵幇鎺ュ彛IAuthService鐨勫姛鑳藉嚱鏁幫紝瀹氫箟涓涓猄erverApp錛岀劧鍚庤繍琛?nbsp;<br /><br />瀹㈡埛璋冪敤嫻嬭瘯錛?br /><br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #008080; "> 1</span> <span style="color: #0000FF; ">from</span> datetime <span style="color: #0000FF; ">import</span> datetime<br /><span style="color: #008080; "> 2</span> <span style="color: #0000FF; ">from</span> base <span style="color: #0000FF; ">import</span> *<br /><span style="color: #008080; "> 3</span> <span style="color: #0000FF; ">import</span> tcelib as tce<br /><span style="color: #008080; "> 4</span> <span style="color: #0000FF; ">from</span> showbox <span style="color: #0000FF; ">import</span> *<br /><span style="color: #008080; "> 5</span> <span style="color: #0000FF; ">import</span> utils.misc<br /><span style="color: #008080; "> 6</span> <span style="color: #0000FF; ">import</span> utils.config<br /><span style="color: #008080; "> 7</span> <span style="color: #0000FF; ">import</span> utils.cipher<br /><span style="color: #008080; "> 8</span> <br /><span style="color: #008080; "> 9</span> <br /><span style="color: #008080; ">10</span> <span style="color: #0000FF; ">def</span> userAuthResult(result,prx):<br /><span style="color: #008080; ">11</span>     <span style="color: #0000FF; ">print</span> result<br /><span style="color: #008080; ">12</span> <br /><span style="color: #008080; ">13</span> <span style="color: #008000; ">#</span><span style="color: #008000; "> queue:client 蹇呴』鍦ㄨ皟鐢ㄦ湇鍔″櫒鐨剋rite 闃熷垪mq</span><span style="color: #008000; "><br /></span><span style="color: #008080; ">14</span> <span style="color: #008000; "></span>communicator =tce.RpcCommunicator.instance().init()<br /><span style="color: #008080; ">15</span> conn = tce.RpcConnectionEasyMQ.create(<span style="color: #800000; ">'</span><span style="color: #800000; ">127.0.0.1</span><span style="color: #800000; ">'</span>,12301,<span style="color: #800000; ">'</span><span style="color: #800000; ">queue:mq_authserver</span><span style="color: #800000; ">'</span>)<br /><span style="color: #008080; ">16</span> local = tce.RpcConnectionEasyMQ.create(<span style="color: #800000; ">'</span><span style="color: #800000; ">127.0.0.1</span><span style="color: #800000; ">'</span>,12301,<span style="color: #800000; ">'</span><span style="color: #800000; ">queue:mq_test_client</span><span style="color: #800000; ">'</span>,tce.AF_READ)<br /><span style="color: #008080; ">17</span> conn.setLoopbackMQ(local)<br /><span style="color: #008080; ">18</span> <br /><span style="color: #008080; ">19</span> <br /><span style="color: #008080; ">20</span> prx = IAuthServerPrx(conn)<br /><span style="color: #008080; ">21</span> prx.userAuth_async(<span style="color: #800000; ">'</span><span style="color: #800000; ">test</span><span style="color: #800000; ">'</span>,<span style="color: #800000; ">'</span><span style="color: #800000; ">111111</span><span style="color: #800000; ">'</span>,1,userAuthResult)    <span style="color: #008000; ">#</span><span style="color: #008000; ">寮傛璋冪敤</span><span style="color: #008000; "><br /></span><span style="color: #008080; ">22</span> <span style="color: #008000; "></span><span style="color: #0000FF; ">print</span> prx.userAuth(<span style="color: #800000; ">'</span><span style="color: #800000; ">test</span><span style="color: #800000; ">'</span>,<span style="color: #800000; ">'</span><span style="color: #800000; ">111111</span><span style="color: #800000; ">'</span>,1)           <span style="color: #008000; ">#</span><span style="color: #008000; ">鍚屾璋冪敤</span></div><br />21,22琛屽垎鍒祴璇曚袱縐嶈皟鐢ㄦā寮?br /><br /><br />client涓巗erver閫氳繃EasyMQ榪涜浼犻?br />easyMQ鏄釜鏈綆鍗曠殑娑堟伅闃熷垪瀹炵幇<br /><br /><br /><br /><br /><br /><br /><br /><img src ="http://m.shnenglu.com/socketref/aggbug/204441.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/socketref/" target="_blank">鏀懼眮闃跨嫍 </a> 2013-11-26 00:53 <a href="http://m.shnenglu.com/socketref/archive/2013/11/26/204441.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>tce for pythonhttp://m.shnenglu.com/socketref/archive/2013/10/02/203519.html鏀懼眮闃跨嫍 鏀懼眮闃跨嫍 Tue, 01 Oct 2013 19:18:00 GMThttp://m.shnenglu.com/socketref/archive/2013/10/02/203519.htmlhttp://m.shnenglu.com/socketref/comments/203519.htmlhttp://m.shnenglu.com/socketref/archive/2013/10/02/203519.html#Feedback0http://m.shnenglu.com/socketref/comments/commentRss/203519.htmlhttp://m.shnenglu.com/socketref/services/trackbacks/203519.html
idl鐨勪繚鐣欏叧閿瓧錛?byte','bool','short','int','long','float','double','string' ,鍧囦笉鑳界敤浜庡畾涔塵odule,class,interface鍜屽彉閲忓悕縐?/div>
瀹氫箟鐨勫彉閲忓悕縐板鏋滃寘鍚互涓嬪崟璇嶏細'def','import','from','type','str','int','float','class' , tce鐢熸垚python浠g爜鏃惰嚜鍔ㄧ粰娣誨姞'_'鍚庣紑錛屾瘮濡傦細 
 struct xx{
   string name;
   string from; 
}
xx緇撴瀯鐨刦rom鍙橀噺鍚嶅皢鐢熸垚from_
鎺ュ彛瀹氫箟錛?/div>
module test{
     dictionary<string,string> Properties_t;
     sequence<string> IpAddressList_t;
     
     interface ITerminal{
          void onGetServerMessage(string text);
     }
     interface Server{
          IpAddressList_t getIpAddresses();  
          Properties_t  getProperties();
          void ping(string fromhost);
          string login(string user,string passwd,ctx);
     };
}
struct: 
tce灝嗙粨鏋剆truct鏄犲皠涓篶lass瀵硅薄 錛屽垵濮嬪寲鎴愬憳鍙橀噺騫跺垱寤烘暎鍒楀嚱鏁?marshall/unmarshall
sequence<T>: 
tce灝嗘暟緇勭被鍨嬬洿鎺ユ槧灝勪負[]
渚嬪 :  
dictionary<K,V> 
tce灝嗗瓧鍏告槧灝勪負 {}
python瀹炵幇Server鎺ュ彛鐨刧etIpAddresses()鏂規硶: 
  def  getIpAddresses():
       return ['192.168.14.101','192.168.12.50']
瀹氫箟鏈嶅姟鍣ㄦ帴鍙e疄鐜幫細 
tce涓篿nterface鐢熸垚鎺ュ彛鍩虹被: class Server
鎴戜滑鎻愪緵涓涓疄鐜扮被 : 
class ServerImpl(Server):
    def __init__(self):
         Server.__init__(self)
   def getIpAddresses(self,ctx):
        return []
鍦ㄨ繖閲屾垜浠彁渚涗簡ServerImpl綾伙紝鐒跺悗緙栧啓瀹炵幇鍑芥暟getIpAddresses. 姣忎釜鎺ュ彛鍑芥暟閮芥惡甯tx鍙傛暟錛宑tx鎼哄甫rpc璇鋒眰鐨勯檮灞炰俊鎭紝姣斿錛?澶栧甫鏁版嵁(dict),搴曢儴鐨勮繛鎺ュ璞?絳夌瓑 銆?nbsp;
鏈嶅姟鎺ュ彛琚О涓轟竴涓湇鍔$被servant ,鎺ヤ笅鏉ユ紨紺哄浣曞皢榪欎釜servant瑁呴厤騫舵彁渚涘鎴楓?nbsp;
tce.RpcCommunicator.instance().init()
ep = tce.RpcEndPoint(host='127.0.0.1',port=16005)                                   瀹氫箟涓涓氫俊绔偣
adapter = tce.RpcCommunicator.instance().createAdapter('first_server',ep) 鍒涘緩涓涓氫俊閫傞厤鍣?/div>
servant = ServerImpl()          鍒涘緩鏈嶅姟鎺ュ彛瀵硅薄
adapter.addServant(servant)  娣誨姞榪涢傞厤鍣?br /> tce.RpcCommunicator.instance().waitForShutdown()   榪涘叆閫氫俊寰幆 
璋冪敤鏈嶅姟錛?nbsp;
tce.RpcCommunicator.instance().init()
prx = test.ServerProxy.create(127.0.0.1,16005)
ips = prx.getIpAddresses()
澶氱鍛煎彨妯″紡: 
tce灝嗘帴鍙e嚱鏁拌嚜鍔ㄧ敓鎴?normal,oneway,async涓夌璋冪敤鎺ュ彛鏂規硶 錛宺pc璋冪敤鍑虹幇寮傚父錛屽簳閮ㄥ皢鎶涘嚭寮傚父錛屾墍浠ョ敤鎴烽渶瑕佸紓甯告崟鑾楓?/div>
1.normal: 
    鍘熷瀷:     fun_name(鍙傛暟..,timeout=0,extra=None)
          璋冪敤鍑芥暟鑷姩娣誨姞timeout,extra鍙傛暟銆倀imeout榛樿涓?錛屽皢鑷姩閲囩敤tce榛樿鐨?0s絳夊緟璋冪敤榪斿洖鏃墮棿錛?/div>
          extra 鎸囨嬈¤皟鐢ㄦ惡甯︾殑闄勫睘鏁版嵁錛宔xtra ={'name':'scott','age':100}
          extra鏁版嵁鍦ㄦ湇鍔$鎺ュ彛鍑芥暟鐨刢tx涓幏鍙栵細 ctx.msg.extra 
          鍑芥暟璋冪敤鏃跺皢闃誨瀹㈡埛綰跨▼錛岀洿鍒皌imeout瓚呮椂鎴栬呮湇鍔″櫒鏁版嵁榪斿洖
2. oneway
    fun_name_oneway(鍙傛暟...,extra=None)
     鍙湁綾誨瀷void鐨勬帴鍙e嚱鏁版墠浼氱敓鎴恛neway璋冪敤鏂規硶.oneway璋冪敤涓嶄細闃誨鐢ㄦ埛綰跨▼錛岄氬父鐢ㄤ簬鍗曞悜浼犺緭鐨勫満鏅紝渚嬪 Server鎺ュ彛鐨刾ing()鍑芥暟
3. async 
     fun_name_async(鍙傛暟,async_callback,extra=None)
     寮傛璋冪敤妯″紡涓嶄細闃誨瀹㈡埛綰跨▼錛宎sync_callback鎸囧畾浜唕pc璋冪敤鐨勮繑鍥炴帴鏀跺嚱鏁?/div>
     鎺ユ敹鍑芥暟鍘熷瀷:  void fun_name_CallBack(result,proxy)
      渚嬪錛氥
          def getIpAddressesResult(result,proxy):
               print result   #result - IpAddressList_t
          prx.getIpAddresses_async(getIpAddressesResult)
*榪炴帴澶嶇敤
  鍦ㄤ簰鑱旂綉搴旂敤鍦烘櫙錛屾湇鍔″櫒灝嗘帴鍏ュぇ閲忕殑瀹㈡埛绔澶囷紝瀹㈡埛绔槸涓嶈兘琚鍧錛屾墍浠ユ湇鍔″櫒瑕佸畬鎴愭帹閫佹秷鎭粰瀹㈡埛绔紝蹇呴』鍦ㄥ鎴風寤虹珛鐨勮繛鎺ヤ笂鍙嶅悜浼犺緭銆?nbsp;
  tce浣胯繖涓伐浣滃彉寰楃浉褰撶畝鍗曪細
    1. 瀹㈡埛绔畾涔夋帴鏀舵秷鎭殑鎺ュ彛 ITerminal,瀹氫箟鎺ユ敹鍑芥暟onGetServerMessage()
          class TermnialImpl(ITerminal):
               ...
     2. 鍒涘緩鍒版湇鍔″櫒鐨勮繛鎺ヤ唬鐞?/div>
          tce.RpcCommunicator.instance().init()
          prx = test.ServerProxy.create(127.0.0.1,16005)  鍒涘緩浣嗗茍涓嶉┈涓婅繛鎺?/a>
     3. 娣誨姞鏈嶅姟綾誨疄鐜?/div>
          adapter = tce.RpcCommAdapter('adapter')
          impl = TerminalImpl()
          adapter.addConnection(prx.conn)
          adapter.addServant(impl)     鍔犲埌閫氫俊鍣ㄥ璞?/span>
     3.  璇鋒眰涓嬈¤皟鐢?/div>
          prx.login('scott','1234')
     4.   鏈嶅姟鍣ㄧ鍙嶅悜璋冪敤ITerminal鐨刼nGetServerMessage()
          def login(self,user,passwd,ctx):
               prx = ITerminalProxy(ctx.conn)
               prx.onGetServerMessage('server message..')     瀹屾垚涓嬈″璁懼绔殑鎺ュ彛璋冪敤


]]> 青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
      <noscript id="pjuwb"></noscript>
            <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
              <dd id="pjuwb"></dd>
              <abbr id="pjuwb"></abbr>
              亚洲欧美欧美一区二区三区| 欧美日本免费一区二区三区| 欧美77777| 久久丁香综合五月国产三级网站| 性久久久久久久久| 欧美在线播放高清精品| 久久久久国产精品厨房| 欧美 日韩 国产在线| 亚洲国产婷婷综合在线精品| 欧美国产精品久久| 在线精品视频免费观看| 亚洲国产精品一区二区第一页 | 欧美日韩1区| 欧美午夜精品理论片a级按摩| 国产精品日韩| 亚洲大片免费看| 亚洲视频观看| 久久婷婷国产综合国色天香| 亚洲福利在线视频| 亚洲欧美另类久久久精品2019| 久久男人av资源网站| 欧美日韩一级黄| 在线观看国产精品网站| 一区二区三区|亚洲午夜| 久久精品国产一区二区三区免费看 | 日韩午夜视频在线观看| 欧美亚洲三级| 欧美肉体xxxx裸体137大胆| 激情成人在线视频| 亚洲欧美国产制服动漫| 亚洲福利视频专区| 午夜精品一区二区三区在线播放| 免费成人高清| 精品电影在线观看| 亚洲免费中文| 91久久中文| 久久久久久久久一区二区| 国产精品成人观看视频国产奇米| 亚洲国产mv| 久久久另类综合| 亚洲一区精彩视频| 欧美视频精品在线| 99精品国产99久久久久久福利| 久久久亚洲国产美女国产盗摄| 一区二区三区视频在线播放| 欧美国产综合| 亚洲老司机av| 欧美激情一区二区三区在线视频 | 久久黄色小说| 国产婷婷97碰碰久久人人蜜臀| 亚洲综合精品| 一区二区欧美精品| 欧美视频三区在线播放| 在线视频精品一区| 亚洲精品字幕| 欧美日本不卡视频| 99国产精品视频免费观看| 亚洲大片精品永久免费| 免费观看一级特黄欧美大片| 欧美日韩精品二区第二页| 亚洲国产精品www| 欧美第一黄网免费网站| 久久免费精品视频| 亚洲国产成人精品女人久久久 | 亚洲国产欧美一区二区三区同亚洲 | 亚洲精品一区在线观看香蕉| 欧美理论电影网| 亚洲视频大全| 亚洲免费在线电影| 国产亚洲欧洲一区高清在线观看 | 久久久av水蜜桃| 尤物精品国产第一福利三区| 美国十次了思思久久精品导航| 久久久av网站| 日韩视频―中文字幕| 亚洲毛片av在线| 国产精品婷婷| 免费短视频成人日韩| 欧美成人午夜免费视在线看片| 一本色道久久综合亚洲91| 亚洲性图久久| 一区二区亚洲欧洲国产日韩| 亚洲第一精品夜夜躁人人躁| 欧美日韩视频在线第一区| 欧美在线一级va免费观看| 久久一区二区三区av| 99精品视频免费观看视频| 亚洲综合欧美| 亚洲欧洲综合另类| 亚洲综合第一| 亚洲久久一区| 欧美一区二区三区免费观看 | 亚洲毛片在线观看| 亚洲一二三四区| 亚洲国产精品成人| 亚洲一级二级| 91久久夜色精品国产网站| 亚洲视频狠狠| 亚洲娇小video精品| 亚洲一级在线| 亚洲精品美女在线观看播放| 性娇小13――14欧美| 日韩视频在线你懂得| 久久精品国产免费看久久精品| 国产精品久久久久久久久久妞妞 | 日韩香蕉视频| 久久精品综合| 亚洲欧美日韩区| 欧美女激情福利| 免费在线观看一区二区| 欧美日韩精品一区| 亚洲大胆在线| 在线观看欧美激情| 欧美一区二区三区视频免费播放 | 欧美一区成人| 欧美日韩一区二区三区在线视频| 另类激情亚洲| 国产欧美日韩专区发布| 妖精成人www高清在线观看| 亚洲欧洲一区二区三区在线观看| 久久精品成人欧美大片古装| 性欧美暴力猛交69hd| 欧美日韩免费一区二区三区| 亚洲高清久久久| 在线播放亚洲| 久久久久久欧美| 葵司免费一区二区三区四区五区| 国产欧美日韩一区二区三区在线| 一区二区三区久久久| 一区二区激情视频| 欧美国产精品久久| 亚洲国产日韩欧美在线图片| 亚洲国产你懂的| 男女激情久久| 亚洲国产精品高清久久久| 亚洲日本aⅴ片在线观看香蕉| 久久婷婷色综合| 欧美 日韩 国产一区二区在线视频| 在线播放亚洲一区| 麻豆9191精品国产| 欧美成人午夜激情在线| 亚洲国产另类精品专区| 免费在线观看成人av| 亚洲国产精品www| 99视频精品免费观看| 欧美日韩视频专区在线播放 | 亚洲国产毛片完整版| 免费人成网站在线观看欧美高清| 亚洲大胆av| 中国成人黄色视屏| 国产精品欧美在线| 欧美在线高清| 欧美freesex8一10精品| 亚洲区免费影片| 欧美视频在线看| 欧美一级视频精品观看| 欧美不卡一区| 一区二区三区日韩精品| 国产精品福利影院| 久久成人国产精品| 亚洲高清一区二| 国产精品二区三区四区| 亚洲一区亚洲| 噜噜噜在线观看免费视频日韩 | 一本久道久久久| 国产精品青草久久| 巨胸喷奶水www久久久免费动漫| 欧美成人精品在线视频| 中文日韩在线| 激情婷婷亚洲| 欧美三级欧美一级| 久久欧美中文字幕| 亚洲视频欧洲视频| 美女国内精品自产拍在线播放| 一区二区三区免费看| 国产在线一区二区三区四区| 欧美电影在线观看| 亚洲影院一区| 亚洲人体一区| 老牛国产精品一区的观看方式| 制服丝袜激情欧洲亚洲| 影院欧美亚洲| 国产伦精品一区二区| 欧美激情亚洲自拍| 久久爱www久久做| 中文av一区二区| 欧美黄色大片网站| 久久女同互慰一区二区三区| 亚洲在线观看视频| 日韩性生活视频| 亚洲高清色综合| 国内精品久久久久影院色| 国产精品第一页第二页第三页| 免费在线视频一区| 久久久水蜜桃| 久久国产精品久久久久久| 一本综合精品| 亚洲精品裸体| 亚洲国产高清aⅴ视频| 欧美成人午夜免费视在线看片|