本篇介绍如何用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')
        
       # 如要调用同步发送方法,方法名去掉Async即可
       # 参数加两个括号因为传过去的是个元组 
self.contract.OnNewPointEventAsync((self.event)) Client()

4.编写服务器

import Demo_ice
import Ice
import sys class DemoI(Demo_ice._M_demo.PointEvent):
  # 不同于Java和C++ Slice出的抽象类,Python的类并不含有异步方法,继承的同步方法可以用于异步调用
def OnNewPointEvent(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服务器和客户端通信——参数传递的更多相关文章

  1. js json简介(json的本质也是字符串)(用于服务器和客户端通信)

    js json简介(json的本质也是字符串)(用于服务器和客户端通信) 一.总结 1.json的语法和js的语法非常像,只是json的键和值都是双引号,因为json的本质也是字符串 2.json是一 ...

  2. C#调用接口注意要点 socket,模拟服务器、客户端通信 在ASP.NET Core中构建路由的5种方法

    C#调用接口注意要点   在用C#调用接口的时候,遇到需要通过调用登录接口才能调用其他的接口,因为在其他的接口需要在登录的状态下保存Cookie值才能有权限调用, 所以首先需要通过调用登录接口来保存c ...

  3. socket,模拟服务器、客户端通信

    服务器代码: using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;u ...

  4. 一个 Java 的 Socket 服务器和客户端通信的例子

    一个 HelloWord 级别的 Java Socket 通信的例子.通讯过程: 先启动 Server 端,进入一个死循环以便一直监听某端口是否有连接请求.然后运行 Client 端,客户端发出连接请 ...

  5. C# Socket简单例子(服务器与客户端通信)

    这个例子只是简单实现了如何使用 Socket 类实现面向连接的通信. 注意:此例子的目的只是为了说明用套接字写程序的大概思路,而不是实际项目中的使用程序.在这个例子中,实际上还有很多问题没有解决,如消 ...

  6. (转)C# Socket简单例子(服务器与客户端通信)

    本文转载自:http://blog.csdn.net/andrew_wx/article/details/6629721 这个例子只是简单实现了如何使用 Socket 类实现面向连接的通信. 注意:此 ...

  7. python -服务器与客户端断电续传程序详细介绍

    6.28自我总结 客户端与服务器之间文件传输断电续传 `通过判断文件大小,以及文件在读取中的指针位置的调整来解决断电续传问题' 1.程序目录 E:/断电续传 |___bil | |___common. ...

  8. JAVA基础篇—模拟服务器与客户端通信

    第一种: 客户端class Client package 服务器发送到客户端; import java.io.BufferedReader; import java.io.InputStreamRea ...

  9. Socket 服务器和客户端通信

    //服务器端package com.svse.service; import java.io.BufferedReader; import java.io.IOException; import ja ...

随机推荐

  1. markdown首行缩进

    首行缩进两个字符:(每个表示一个空格,连续使用两个即可)   半角的空格  全角的空格

  2. 阿里云 oss 上传文件,js直传,.net 签名,回调

    后台签名 添加引用 string dir = string.Format("{0:yyyy-MM-dd}", date) + "/"; OssClient cl ...

  3. hdu6395 (矩阵快速幂+分块)

    Online Judge Online Exercise Online Teaching Online Contests Exercise Author F.A.Q Hand In Hand Onli ...

  4. hdu6396(思维+输入挂)

    Swordsman Time Limit: / MS (Java/Others) Memory Limit: / K (Java/Others) Total Submission(s): Accept ...

  5. 网络通信协议,TCP和UDP 的区别

    1.网络通信   互联网本质就是一系列的网络通信,互联网协议的功能是定义计算机如何介入internet,以及介入internet的计算机通信的标准.互联网协议按照功能不同分为osi7层或tcp/ip五 ...

  6. python3.6.3安装步骤,适用linux centos系统

    step1: yum -y install gccyum install zlib zlib-devel step2: cd /usr/bin/ mv python python.bak step3: ...

  7. stackExchange.redis 实现模糊匹配批量查询

    如果使用redis的频次较高,那么业务中经常会出现需要根据关键字进行批量查询,所以总结一下StackExchange中使用批量查询的方法(如果数据量很大,那么在redis中模糊查询很耗时,请慎用!) ...

  8. Android studio报Error:(26, 13)-v7:27.错误的解决方法

    1.报错图片 2.上图我画了红圈很明显就提示报错方向就是项目文件:build.gradle 3.解决方法如下 添加此方法到项目构建.gradle文件中: repositories {    maven ...

  9. shell脚本实现git和svn统计log代码行

    实现的功能 git 根据传入的三个参数:起始统计日期.结束统计日期.git仓库地址. 脚本统计的是git仓库内的所有分支的log信息. 脚本统计的是指定时间段内.每一个提交人指定的git地址的所有分支 ...

  10. Java多线程之线程状态总结

    概述 线程大家肯定不陌生,对于线程中的运行状态,自己经常搞混淆,这边按照下图记录下: 线程一般来说有如下几种状态: 新建,可运行,超时阻塞,等待阻塞,同步阻塞,死亡 yeild:当线程执行了yield ...