已阅读1页,还剩3页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
一种基于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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 唐山疫情演讲稿小学生
- 2026年医学专业知识面试题库与解答
- 开学班会演讲稿高三
- 2026年营养学基础知识自测题集
- 民法典10章演讲稿
- 社交媒体虚假信息防控课题申报书
- 基因编辑与可持续发展的医学伦理责任
- 贵金属首饰制作工安全生产规范强化考核试卷含答案
- 紫胶制片工操作能力考核试卷含答案
- 线绕电阻器、电位器制造工岗前复测考核试卷含答案
- 【喀什】2025下半年新疆喀什技师学院面向社会公开引进急需紧缺人才23人笔试历年典型考题及考点剖析附带答案详解
- 初中地理七年级下册《热力巴西-自然基底与人文脉动探究》教案
- 中央民族大学辅导员考试题库
- 福建省集成电路产业园区控制性详细规划设计
- 《闭水试验excel自动计算表》化学建材管和钢筋混凝土管 管道内径 允许渗水量 试验段上游设计水头
- 抖音直播新人培训学习完整手册
- LY/T 3253-2021林业碳汇计量监测术语
- GB/T 40545-2021煤层气井压裂作业导则
- GB/T 17587.3-2017滚珠丝杠副第3部分:验收条件和验收检验
- GB/T 12616.1-2004封闭型沉头抽芯铆钉11级
- 铝用预焙阳极生产简介课件
评论
0/150
提交评论