本篇介绍如何用IceGrid建立python多机通信,传递比较复杂的参数
Ice代码:Demo.ice
#ifndef TOS_ICE_COMMON #define TOS_ICE_COMMON module demo { class EventArgs { string source; string occurTime; }; struct Point { int x; int y; }; class pointEventArgs extends EventArgs { Point pt; }; interface PointEvent { ["amd","ami"] idempotent void OnNewPointEvent(pointEventArgs args); } }; #endif
pip install zeroc-ice
或者参照:https://blog.csdn.net/qq_37556007/article/details/80843541
slice2py Demo.ice
得到Demo_ice.py
import Demo_ice import Ice import sys import time class Client: def __init__(self): self.point = Demo_ice._M_demo.Point(x=10, y=20) self.event = Demo_ice._M_demo.pointEventArgs(source=‘client‘, occurTime=time.time().__str__(), pt=self.point) with Ice.initialize(sys.argv) as communicator: base = communicator.stringToProxy(‘Communicate:tcp -p 10001‘) self.contract = Demo_ice._M_demo.PointEventPrx.checkedCast(base) if not self.contract: raise RuntimeError(‘Invalid Proxy‘) self.contract.OnNewPointEvent(self.event) Client()
import Demo_ice import Ice import sys class DemoI(Demo_ice._M_demo.PointEvent): def OnNewPointEventAsync(self, args, current=None): print "Received:" print args with Ice.initialize(sys.argv) as communicator: adapter = communicator.createObjectAdapterWithEndpoints("Communicate:tcp", "tcp -p 10001") object = DemoI() adapter.add(object, communicator.stringToIdentity("Communicate")) adapter.activate() communicator.waitForShutdown()
IceGrid 用于Python服务器和客户端通信——参数传递
原文:https://www.cnblogs.com/Asp1rant/p/10533626.html