IceGrid 用于Python服务器和客户端通信——参数传递
本篇介绍如何用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服务器和客户端通信——参数传递的更多相关文章
- js json简介(json的本质也是字符串)(用于服务器和客户端通信)
js json简介(json的本质也是字符串)(用于服务器和客户端通信) 一.总结 1.json的语法和js的语法非常像,只是json的键和值都是双引号,因为json的本质也是字符串 2.json是一 ...
- C#调用接口注意要点 socket,模拟服务器、客户端通信 在ASP.NET Core中构建路由的5种方法
C#调用接口注意要点 在用C#调用接口的时候,遇到需要通过调用登录接口才能调用其他的接口,因为在其他的接口需要在登录的状态下保存Cookie值才能有权限调用, 所以首先需要通过调用登录接口来保存c ...
- socket,模拟服务器、客户端通信
服务器代码: using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;u ...
- 一个 Java 的 Socket 服务器和客户端通信的例子
一个 HelloWord 级别的 Java Socket 通信的例子.通讯过程: 先启动 Server 端,进入一个死循环以便一直监听某端口是否有连接请求.然后运行 Client 端,客户端发出连接请 ...
- C# Socket简单例子(服务器与客户端通信)
这个例子只是简单实现了如何使用 Socket 类实现面向连接的通信. 注意:此例子的目的只是为了说明用套接字写程序的大概思路,而不是实际项目中的使用程序.在这个例子中,实际上还有很多问题没有解决,如消 ...
- (转)C# Socket简单例子(服务器与客户端通信)
本文转载自:http://blog.csdn.net/andrew_wx/article/details/6629721 这个例子只是简单实现了如何使用 Socket 类实现面向连接的通信. 注意:此 ...
- python -服务器与客户端断电续传程序详细介绍
6.28自我总结 客户端与服务器之间文件传输断电续传 `通过判断文件大小,以及文件在读取中的指针位置的调整来解决断电续传问题' 1.程序目录 E:/断电续传 |___bil | |___common. ...
- JAVA基础篇—模拟服务器与客户端通信
第一种: 客户端class Client package 服务器发送到客户端; import java.io.BufferedReader; import java.io.InputStreamRea ...
- Socket 服务器和客户端通信
//服务器端package com.svse.service; import java.io.BufferedReader; import java.io.IOException; import ja ...
随机推荐
- eslint常用关闭校验语句
1. 关闭段落校验 /* eslint-disable */some code some code /* eslint-enable */ 2. 关闭当前行校验 some code // eslint ...
- [record]WebLogic域之创建-文本界面
WebLogic域的创建方式主要有图形界面.文本方式(字符界面).脚本方式(WLST脚本)等,本文用文本方式来创建域. 一.启动Configuration Wizard •config.cmd/con ...
- boost第 4 章 事件处理
http://zh.highscore.de/cpp/boost/ 1.信号 Signals 2.一旦对象 被销毁,连接就会自动释放. 让 FF类继承自 boost::signals::trackab ...
- C++文件输入和创建
#include <fstream> //头文件 ifstream inf; ofstream ouf; inf.open("zy4.txt", ios::out); ...
- 算法:输出一个整数(不用ToString方法)
1.递归实现 static void Main(string[] args) { Console.WriteLine("Pls input a number:"); int p = ...
- 工作笔记6-java相关
1.有时候安装失败或者要装新版本的JDK,可先卸载JDK: a. 首先执行命令查看服务器下的JDK的版本:命令如下:rpm -qa |grep jdk b. 然后执行命令:yum -y rem ...
- linux常用命令 cut字符截取命令
cut 字符截取 cut [选项] 文件名 选项 -f 列号: 提取第几列 -d 分割符:按照指定的分隔符分割列 默认使用制表符("tab")进行分割 ssgao:Download ...
- linux php7.2安装扩展memcached
wget http://pecl.php.net/get/igbinary-2.0.8.tgz tar -xzvf igbinary-2.0.8.tgz cd igbinary-2.0.8 /usr/ ...
- Unity录音
上周做过Unity录音,(不知道的可以到网上查找一下,代码挺多的),不过只能录制麦克风的声音,项目需要同时录制背景音和麦克风传进去的声音,经过探索,现已可以录制: 首先需要知道,即使用电脑录音,想录制 ...
- 建设工程造价数据服务云平台(计价BIM)
经过多次沟通和对招标文件的理解,招标人通过软件平台建立和使用人员库.项目库.材料设备价格库.数据库等四库的真实需求,本着招标人对“成果文件”(指造价.招标代理的计价成果),即“项目库”的计价文件,不打 ...