欢迎来到天天文库
浏览记录
ID:8814929
大小:46.50 KB
页数:4页
时间:2018-04-08
《一种基于protocolbuffer协议的服务端-客户端通信例子》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、一种基于ProtocolBuffer协议的服务端-客户端通信例子XXX(山东潍坊职业学院,潍坊261031)摘要:本文利用Python和基本的socket编程,实现基于protocolbuffer的服务端-客户端通信,通过protocolbuffer,可以实现通信接口的平滑升级。关键词:Python;ProtocolBuffer;网络编程;AnImplementOfServer-ClientCommunicationBasedOnGoogleProtocolBufferXXX(WeifangVocationalCollege,ShandongWeifang,261
2、031)Abstract:Thisarticleimplementaserver-clientcommunicationbasedongoogleprotocolbuffer.Bytheprotocolbuffer,wecanupdatethecommunicationinterfacesmoothly.Keywords:Python;ProtocolBuffer;NetworkProgramming;1.简介ProtocolBuffers是Google公司开发的一种数据描述语言,类似于XML能够将结构化数据序列化,可用于数据存储、通信协议等方面。它不依赖于语言和
3、平台并且可扩展性极强。现阶段官方支持C++、JAVA、Python等三种编程语言,但可以找到大量的几乎涵盖所有语言的第三方拓展包。Python:Python是一种面向对象、直译式计算机程序设计语言,由GuidovanRossum于1989年底发明,第一个公开发行版发行于1991年。Python语法简捷而清晰,具有丰富和强大的类库。Python最大的特点是编程快速易上手。2.ProtcolBuffer协议定义ProtocolBuffer是google研发的针对数据描述的语言,相比传统的xml,它更简单易用,描述更清晰,解析更快,数据访问更快。下面看一个例子,例如我们
4、需要描述服务器和客户端的通信协议设计为:客户端->服务端消息:FromAddrToAddrCcAddrSubjectContent服务端->客户端消息:ResponseCodeMsg4用xml来描述如下:客户端->服务端消息:1223@qq.com21323@qq.com213223@qq.comhellworldthisisatestmail服务端->客户端消息:5、ml>0success用protocolbuffer来描述如下:客户端->服务端消息:message mailReq{requiredstringfrom=1;requiredstringto=2;optionalstringcc=3;requiredstringsubject=4;requiredstringcontent=5;}服务端->客户端消息:message mailRsp{requiredcode=1;optionedmsg=2;}3.基于ProtcolB6、uffer实现服务端和客户端定义好上述的protocol协议后,采用protoc编译成python代码,产生mailReq_pb2.py和mailRsp_pb2.py2个文件客户端发送代码:importsocketimportmailReq_pb2.pyimportmailRsp_pb2.pyhost="localhost"4port=10000s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)s.connect((host,port))req=mailReq_pb2.mailReq()req.from=”12237、@qq.com”req.to=“21323@qq.com”req.cc=“213223@qq.com”req.subject=“helloworld”req.content=“thisisatestmail”sendData=req.SerializeToString()s.send(sendData)recvData=s.recv(4096)rsp=mailRsp_pb2.mailRsp()rsp.ParseFromString(recvData)printreqprintrsps.close()服务端处理代码:importsocketimportmailReq8、_pb2.
5、ml>0success用protocolbuffer来描述如下:客户端->服务端消息:message mailReq{requiredstringfrom=1;requiredstringto=2;optionalstringcc=3;requiredstringsubject=4;requiredstringcontent=5;}服务端->客户端消息:message mailRsp{requiredcode=1;optionedmsg=2;}3.基于ProtcolB
0
6、uffer实现服务端和客户端定义好上述的protocol协议后,采用protoc编译成python代码,产生mailReq_pb2.py和mailRsp_pb2.py2个文件客户端发送代码:importsocketimportmailReq_pb2.pyimportmailRsp_pb2.pyhost="localhost"4port=10000s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)s.connect((host,port))req=mailReq_pb2.mailReq()req.from=”1223
7、@qq.com”req.to=“21323@qq.com”req.cc=“213223@qq.com”req.subject=“helloworld”req.content=“thisisatestmail”sendData=req.SerializeToString()s.send(sendData)recvData=s.recv(4096)rsp=mailRsp_pb2.mailRsp()rsp.ParseFromString(recvData)printreqprintrsps.close()服务端处理代码:importsocketimportmailReq
8、_pb2.
此文档下载收益归作者所有