锘??xml version="1.0" encoding="utf-8" standalone="yes"?>国产精品无码久久久久,91精品国产综合久久精品,久久综合亚洲鲁鲁五月天http://www.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://www.shnenglu.com/socketref/archive/2016/09/18/214280.html鏀懼眮闃跨嫍 鏀懼眮闃跨嫍 Sun, 18 Sep 2016 08:03:00 GMThttp://www.shnenglu.com/socketref/archive/2016/09/18/214280.htmlhttp://www.shnenglu.com/socketref/comments/214280.htmlhttp://www.shnenglu.com/socketref/archive/2016/09/18/214280.html#Feedback0http://www.shnenglu.com/socketref/comments/commentRss/214280.htmlhttp://www.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://www.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://www.shnenglu.com/socketref/archive/2013/11/26/204441.html</guid><wfw:comment>http://www.shnenglu.com/socketref/comments/204441.html</wfw:comment><comments>http://www.shnenglu.com/socketref/archive/2013/11/26/204441.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/socketref/comments/commentRss/204441.html</wfw:commentRss><trackback:ping>http://www.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://www.shnenglu.com/socketref/aggbug/204441.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/socketref/" target="_blank">鏀懼眮闃跨嫍 </a> 2013-11-26 00:53 <a href="http://www.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://www.shnenglu.com/socketref/archive/2013/10/02/203519.html鏀懼眮闃跨嫍 鏀懼眮闃跨嫍 Tue, 01 Oct 2013 19:18:00 GMThttp://www.shnenglu.com/socketref/archive/2013/10/02/203519.htmlhttp://www.shnenglu.com/socketref/comments/203519.htmlhttp://www.shnenglu.com/socketref/archive/2013/10/02/203519.html#Feedback0http://www.shnenglu.com/socketref/comments/commentRss/203519.htmlhttp://www.shnenglu.com/socketref/services/trackbacks/203519.html
idl鐨勪繚鐣欏叧閿瓧錛?byte','bool','short','int','long','float','double','string' ,鍧囦笉鑳界敤浜庡畾涔塵odule,class,interface鍜屽彉閲忓悕縐?/div>
瀹氫箟鐨勫彉閲忓悕縐板鏋滃寘鍚互涓嬪崟璇嶏細(xì)'def','import','from','type','str','int','float','class' , tce鐢熸垚python浠g爜鏃惰嚜鍔ㄧ粰娣誨姞'_'鍚庣紑錛屾瘮濡傦細(xì) 
 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灝嗘暟緇勭被鍨嬬洿鎺ユ槧灝勪負(fù)[]
渚嬪 :  
dictionary<K,V> 
tce灝嗗瓧鍏告槧灝勪負(fù) {}
python瀹炵幇Server鎺ュ彛鐨刧etIpAddresses()鏂規(guī)硶: 
  def  getIpAddresses():
       return ['192.168.14.101','192.168.12.50']
瀹氫箟鏈嶅姟鍣ㄦ帴鍙e疄鐜幫細(xì) 
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涓夌璋冪敤鎺ュ彛鏂規(guī)硶 錛宺pc璋冪敤鍑虹幇寮傚父錛屽簳閮ㄥ皢鎶涘嚭寮傚父錛屾墍浠ョ敤鎴烽渶瑕佸紓甯告崟鑾楓?/div>
1.normal: 
    鍘熷瀷:     fun_name(鍙傛暟..,timeout=0,extra=None)
          璋冪敤鍑芥暟鑷姩娣誨姞timeout,extra鍙傛暟銆倀imeout榛樿涓?錛屽皢鑷姩閲囩敤tce榛樿鐨?0s絳夊緟璋冪敤榪斿洖鏃墮棿錛?/div>
          extra 鎸囨嬈¤皟鐢ㄦ惡甯︾殑闄勫睘鏁版嵁錛宔xtra ={'name':'scott','age':100}
          extra鏁版嵁鍦ㄦ湇鍔$鎺ュ彛鍑芥暟鐨刢tx涓幏鍙栵細(xì) ctx.msg.extra 
          鍑芥暟璋冪敤鏃跺皢闃誨瀹㈡埛綰跨▼錛岀洿鍒皌imeout瓚呮椂鎴栬呮湇鍔″櫒鏁版嵁榪斿洖
2. oneway
    fun_name_oneway(鍙傛暟...,extra=None)
     鍙湁綾誨瀷void鐨勬帴鍙e嚱鏁版墠浼?xì)鐢熸垚oneway璋冪敤鏂規(guī)硶.oneway璋冪敤涓嶄細(xì)闃誨鐢ㄦ埛綰跨▼錛岄氬父鐢ㄤ簬鍗曞悜浼犺緭鐨勫満鏅紝渚嬪 Server鎺ュ彛鐨刾ing()鍑芥暟
3. async 
     fun_name_async(鍙傛暟,async_callback,extra=None)
     寮傛璋冪敤妯″紡涓嶄細(xì)闃誨瀹㈡埛綰跨▼錛宎sync_callback鎸囧畾浜唕pc璋冪敤鐨勮繑鍥炴帴鏀跺嚱鏁?/div>
     鎺ユ敹鍑芥暟鍘熷瀷:  void fun_name_CallBack(result,proxy)
      渚嬪錛氥
          def getIpAddressesResult(result,proxy):
               print result   #result - IpAddressList_t
          prx.getIpAddresses_async(getIpAddressesResult)
*榪炴帴澶嶇敤
  鍦ㄤ簰鑱旂綉搴旂敤鍦烘櫙錛屾湇鍔″櫒灝嗘帴鍏ュぇ閲忕殑瀹㈡埛绔澶囷紝瀹㈡埛绔槸涓嶈兘琚鍧錛屾墍浠ユ湇鍔″櫒瑕佸畬鎴愭帹閫佹秷鎭粰瀹㈡埛绔紝蹇呴』鍦ㄥ鎴風(fēng)寤虹珛鐨勮繛鎺ヤ笂鍙嶅悜浼犺緭銆?nbsp;
  tce浣胯繖涓伐浣滃彉寰楃浉褰撶畝鍗曪細(xì)
    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..')     瀹屾垚涓嬈″璁懼绔殑鎺ュ彛璋冪敤


]]> 久久夜色撩人精品国产| 久久水蜜桃亚洲av无码精品麻豆| 性欧美大战久久久久久久久| 色婷婷噜噜久久国产精品12p | 久久99国产精品久久| 人人狠狠综合久久88成人| 精品国产日韩久久亚洲| 久久免费看黄a级毛片| 中文字幕乱码久久午夜| 无码人妻精品一区二区三区久久| 国产亚洲美女精品久久久2020| 精品久久久中文字幕人妻| 精品久久人人爽天天玩人人妻| 伊人久久大香线蕉综合影院首页| 久久久久亚洲AV成人片| 久久久久国产精品| 日本加勒比久久精品| 亚洲国产精品无码久久98| 99re这里只有精品热久久 | 久久综合久久综合久久| 99久久免费国产精品热| 久久精品国产亚洲一区二区三区| 久久av高潮av无码av喷吹| 四虎影视久久久免费| 亚洲AV无码久久| 777久久精品一区二区三区无码| 久久久久一级精品亚洲国产成人综合AV区| 欧美日韩精品久久久久| 亚洲国产另类久久久精品小说 | 久久综合丝袜日本网| 青草久久久国产线免观| 亚洲AV无码1区2区久久| 久久精品这里只有精99品| 日韩人妻无码一区二区三区久久| 青青国产成人久久91网| 麻豆av久久av盛宴av| 一本久久久久久久| 麻豆一区二区99久久久久| 欧美久久一区二区三区| 中文精品久久久久国产网址| 久久人人爽人人爽人人片av麻烦 |