当前位置:范文大全 > 公文范文 > 一种基于ProtocolBuffer协议服务端-客户端通信例子

一种基于ProtocolBuffer协议服务端-客户端通信例子

发布时间:2021-10-14 10:06:15

一种基于ProtocolBuffer协议的服务端-客户端通信例子 本文关键词:服务端,客户端,例子,协议,通信

一种基于ProtocolBuffer协议的服务端-客户端通信例子 本文简介:一种基于ProtocolBuffer协议的服务端-客户端通信例子XXX(山东潍坊职业学院,潍坊261031)摘要:本文利用Python和基本的socket编程,实现基于protocolbuffer的服务端-客户端通信,通过protocolbuffer,可以实现通信接口的平滑升级。关键词:Python

一种基于ProtocolBuffer协议的服务端-客户端通信例子 本文内容:

一种基于ProtocolBuffer协议的服务端-客户端通信例子

XXX

(山东

潍坊职业学院,潍坊

261031)

摘要:本文利用Python和基本的socket编程,实现基于protocol

buffer的服务端-客户端通信,通过protocol

buffer,可以实现通信接口的平滑升级。

关键词:Python;

Protocol

Buffer;

网络编程;

An

Implement

Of

Server-Client

Communication

Based

On

Google

Protocol

Buffer

XXX

(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最大的特点是编程快速易上手。

2.Protcol

Buffer协议定义

Protocol

Buffer是google研发的针对数据描述的语言,相比传统的xml,它更简单易用,描述更清晰,解析更快,数据访问更快。下面看一个例子,例如我们需要描述服务器和客户端的通信协议设计为:

客户端->服务端消息:

FromAddr

ToAddr

CcAddr

Subject

Content

服务端->客户端消息:

ResponseCode

Msg

用xml来描述如下:

客户端->服务端消息:

[email protected]

[email protected]

[email protected]

hell

world

this

is

a

test

mail

服务端->客户端消息:

0

success

用protocol

buffer来描述如下:

客户端->服务端消息:

message

mailReq

{

required

string

from

=1;

required

string

to

=2;

optional

string

cc

=3;

required

string

subject

=4;

required

string

content

=5;

}

服务端->客户端消息:

message

mailRsp

{

required

code

=1;

optioned

msg

=2;

}

3.基于Protcol

Buffer实现服务端和客户端

定义好上述的protocol协议后,采用protoc编译成python代码,产生mailReq_pb2.py和mailRsp_pb2.py

2个文件

客户端发送代码:

import

socket

import

mailReq_pb2.py

import

mailRsp_pb2.py

host=“localhost“port=10000

s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)

s.connect((host,port))

req=

mailReq_pb2.mailReq()

req.from=”

[email protected]”

req.to

=

“[email protected]”

req.cc

=

“[email protected]”

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

req

print

rsp

s.close()

服务端处理代码:

import

socket

import

mailReq_pb2.py

import

mailRsp_pb2.py

host=“localhost“port=10000

s=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:

break

else:

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

print

rsp

4.总结

本文通过protocol

buffer自定义通信协议,并且实现了一个服务器客户端通信的实例,通过protocol

buffer,用户不再需要关注通信协议中枯燥易错的的编码解码工作,从而可以把精力放在业务处理上,提高开发生产力。

4

版权所有:蓬勃范文网 2010-2024 未经授权禁止复制或建立镜像[蓬勃范文网]所有资源完全免费共享

Powered by 蓬勃范文网 © All Rights Reserved.。蜀ICP备20021444号