首页 > 编程知识 正文

网络传输协议包括哪些,网络传输文件的协议有哪些

时间:2023-05-03 19:48:15 阅读:232034 作者:3046

ProtoBuf(protocol buffer) 网络传输协议 转自:http://blog.csdn.net/wenyiqingnianiii/article/details/52741312

ProtoBuf是Google开源的一套二进制流网络传输协议,它独立于语言,独立于平台。google 提供了多种语言的实现:java、c#、c++、Go 和Python,每一种实现都包含了相应语言的编译器以及库文件。由于它是一种二进制的格式,比使用 xml 进行数据交换快许多。可以把它用于分布式应用之间的数据通信或者异构环境下的数据交换。作为一种效率和兼容性都很优秀的二进制数据传输格式,可以用于诸如网络传输、配置文件、数据存储等诸多领域。

优点:传输效率快(比xml和json快10-20倍),文档型协议; 
缺点:使用不太方便;

这里简单解释一下什么是文档型协议,向我们的xml和json一般在使用的时候都需要保存一份说明文档和一个实际的java类,而protobuf在使用的时候其定义的格式就是说明文档,简单明了而且可以将其编译成各个平台的类库,以java平台为例,其编程成jar之后,若定义文件发生了变化,则在使用jar包的话就会报错,必须重新编译,这也就保证了App端与服务器端的协议统一性。

网络传输协议实践

由于ProtoBuf的传输效率和文档型协议的特性,公司产品选择了Protobuf作为网络传输协议。下面我就以一个简单的登录操作,介绍一下对ProtoBuf的实际应用。

可以看到在Protobuf中定义网络请求,分为两个部分,请求部分和应答部分,其message request定义的是请求信息,而message response定义的是应答信息。 

请求信息中的字段就是我们请求中需要传递的字段,应答信息中的字段就是App端获取的服务器端的应答信息集合。

每个字段都有修饰符,那么修饰符是做什么的呢? 
在protobuf中定义了三种修饰符,分别为:required,optional,repeated。其中:

required:表示的是这个字段必须要传递,不可为空;

optional:表示的是这个字段可传可不传,可以为空;

repeated:表示这个字段传递的是列表数据

在message的定义过程中,message还可以嵌套另外的message信息,比如应答信息中的UserStatus,其和java中对象的概念很类似。

(3)将proto文件编译成jar包 
这里就不在具体介绍怎么讲proto文件编译成jar了,google已经提供了相应的编译工具。

(4)在Android代码中使用 
由于我们将proto文件编译成了jar包,首先我们需要将jar引入到我们的工程,然后就可以使用了。这里简单看一下具体的使用代码。

可以发现我们在代码中直接有对应的登录请求message类,这样我们就可以直接通过java类调用了,O(∩_∩)O哈哈~。

总结:

本文主要介绍了App开发过程中常见了三种网络传输协议,以及各自的优劣势,还重点介绍了protobuf协议的使用方式等。当然了这里我还是比较推荐protobuf的。


版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。