



全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
一种基于ProtocolBuffer协议的服务端-客户端通信例子XXX(山东 潍坊职业学院,潍坊 261031)摘要:本文利用Python和基本的socket编程,实现基于protocol buffer的服务端-客户端通信,通过protocol buffer,可以实现通信接口的平滑升级。关键词:Python; Protocol Buffer; 网络编程;An Implement Of Server-Client Communication Based On Google Protocol BufferXXX(Weifang Vocational College, Shandong Weifang, 261031)Abstract: This article implement a server-client communication based on google protocol buffer.By the protocol buffer , we can update the communication interface smoothly.Keywords: Python; Protocol Buffer; Network Programming;1简介Protocol Buffers是Google公司开发的一种数据描述语言,类似于XML能够将结构化数据序列化,可用于数据存储、通信协议等方面。它不依赖于语言和平台并且可扩展性极强。现阶段官方支持C+、JAVA、Python等三种编程语言,但可以找到大量的几乎涵盖所有语言的第三方拓展包。Python:Python是一种面向对象、直译式计算机程序设计语言,由Guido van Rossum于1989年底发明,第一个公开发行版发行于1991年。Python语法简捷而清晰,具有丰富和强大的类库。Python最大的特点是编程快速易上手。2Protcol Buffer协议定义Protocol Buffer是google研发的针对数据描述的语言,相比传统的xml,它更简单易用,描述更清晰,解析更快,数据访问更快。下面看一个例子,例如我们需要描述服务器和客户端的通信协议设计为:客户端-服务端消息:FromAddr ToAddr CcAddr Subject Content 服务端-客户端消息:ResponseCode Msg用xml来描述如下:客户端-服务端消息: 1223 21323 213223 hell world this is a test mail 服务端-客户端消息: 0 success 用protocol buffer来描述如下:客户端-服务端消息:messagemailReq required string from =1; required string to =2; optional string cc =3; required string subject =4; required string content =5;服务端-客户端消息:messagemailRsp required code =1; optioned msg =2;3基于Protcol Buffer实现服务端和客户端定义好上述的protocol协议后,采用protoc编译成python代码,产生mailReq_pb2.py和mailRsp_pb2.py 2个文件客户端发送代码:import socketimport mailReq_pb2.pyimport mailRsp_pb2.pyhost=localhostport=10000s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)s.connect(host,port)req= mailReq_pb2.mailReq()req.from=” 1223”req.to = “21323”req.cc = “213223”req.subject = “hello world”req.content = “this is a test mail”sendData = req.SerializeToString()s.send(sendData)recvData = s.recv(4096)rsp = mailRsp_pb2.mailRsp()rsp.ParseFromString(recvData)print reqprint rsps.close()服务端处理代码:import socketimport mailReq_pb2.pyimport mailRsp_pb2.pyhost=localhostport=10000s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)s.bind(host,port)s.listen(5)while 1:sock,addr=s.accept()print got connection form ,sock.getpeername()reqData=sock.recv(4096)if not data:breakelse:req= mailReq_pb2.mailReq()req.ParseFromString(reqData)rsp = mailRsp_pb2.mailRsp()if req.from = “”: rsp.code =1 rsp.msg = “empty from address”else: rsp.code = 0 rsp.msg = “success”rspData = rsp.SerializeToString()sock.send(rspData)print req
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 【正版授权】 ISO/IEC 23090-24:2025 EN Information technology - Coded representation of immersive media - Part 24: Conformance and reference software for scene description
- 【正版授权】 IEC 60245-6:1994/AMD2:2003 EN-D Amendment 2 - Rubber insulated cables - Rated voltages up to and including 450/750 V - Part 6: Arc welding electrode cables
- 艺术素养考试试题及答案
- 六一儿童节亲子活动方案
- 六一团史活动方案
- 六一廉洁家风活动方案
- 六一教室聚会活动方案
- 六一活动爬竹竿活动方案
- 六一活动节活动策划方案
- 六一睫毛活动方案
- 2024年河南三门峡市市直事业单位招考(153人)易考易错模拟试题(共500题)试卷后附参考答案
- 立定跳远(教案) 体育四年级下册(表格式)
- 北京市西城区2023-2024学年七年级下学期期末考试数学试卷
- 江苏省苏州市2023-2024学年高一下学期6月期末考试化学试题
- 浙江省宁波市鄞州区2023-2024学年四年级下学期期末数学试题
- 江苏省常州市教育学会2023-2024学年七年级下学期学业水平监测语文试题
- 酵素招商营销策划方案-培训课件
- 连接器基础知识培训
- 注塑工艺验证周期
- 招标代理机构入围 投标方案(技术方案)
- 食管静脉曲张套扎术
评论
0/150
提交评论