ice服务器与客户端互传消息,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

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

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 ...

随机推荐

iOS开发 - OC - 苹果为大家提供的后台:CloudKit 的简单使用

一.什么是cloudKit 移动开发中,网络请求数据是日常中用到的,我们习惯把一些用户改动的数据存在服务器,以便下次请求使用.或者开发者方通过服务器将编辑的数据发送给用户.但是这一切都建立在我们的AP ...

artTemplate 自动化编译之tmod

一.背景 前端小白的成长历程,一般都会经历html模板的一些问题,jquery template/artTemplate/yayaTemplate等常见的模板使用,这里就不作介绍了. 先谈谈我们为什么 ...

BZOJ3488 : [ONTAK2010]Highways

对于询问(x,y),恰经过一条非树边且不经过树上两点间路径的路径数为: ·若x与y成祖先-孩子关系,假设y是x的祖先,z是y到x方向的第一个节点,则 ans=起点在x的子树里,且终点不在z的子树里的非 ...

Webservice-WSDL详解(三)

怎样向别人介绍WS的功能呢?一般咱们会写接口文档,亦或口头告诉使用的人.这些方式都存在问题:其中一个我上篇中说过,客户端是无法直接使用服务端接口的:二是程序员在电脑前,想使用WS时,他们的工具(如Ec ...

Linux - test测试标志的意思总结

测试的标志 代表意义 1. 关於某个档名的『文件类型』判断,如 test -e filename 表示存在否 -e 该『档名』是否存在?(常用) -f 该『档名』是否存在且为文件(file)?(常用) ...

区块链 编译android geth 填坑记录 ubuntu

下载geth 源码  直接 make android 下载android ndk sdk 配置环境变量cd 安装golang  设置环境变量 发现没有gomobile命令 按照wiki方法 执行安装g ...

Linux环境(Centos7)下部署.NetCore2.0的Web应用

Web应用基于Windows环境下开发,然后部署到Linux 1.进入VS2017,点击新建->项目->.NetCore->ASP.NET Core Web应用程序,确定 2.选择W ...

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值