首页 > 编程语言 > 详细

IceGrid 用于Python服务器和客户端通信——参数传递

时间:2019-03-14 22:08:46      阅读:313      评论:0      收藏:0      [点我收藏+]

本篇介绍如何用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

1.python安装zeroC Ice:

pip install zeroc-ice

或者参照:https://blog.csdn.net/qq_37556007/article/details/80843541

2.对Ice文件进行切片

slice2py Demo.ice

得到Demo_ice.py

3.编写客户端

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()

4.编写服务器

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

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!