二进制协议和文本协议的区别

各位小伙伴们 我一开始不能区分二进制协议和文本协议的区别,是因为我想电脑在传输的过程中,应该传输的就是二进制的数据啊,那文本协议是要传输abcd这类的字符吗?是我理解错了:其实无论是文本协议还是二进制协议,数据从a电脑传到b电脑的过程,传输的数据都是二进制的也就是0和1,那什么是文本协议什么是二进制协议呢

比如我们现在向服务端发送一条消息,内容是个人介绍:Name="xxl",Age=22,Des="贼帅贼帅的"

1.二进制协议的做法是:客户端 告诉 服务端 定制的协议的结构:比如客户端说 我给你发上去结构是,先来字符串(多长)的名字,然后再来int类型的年龄,然后在发字符串(多长),你就按照这个结构解释得到的二进制数据就行

2.文本协议的做法是:客户端不需要和服务端定什么结构,比如json:{Name:"xxl",Age:22,Des:"贼帅贼帅的"},客户端就把这个一串变成二进制发过去(0和1),哪有人就会问,那服务端要怎么知道解析这一串数据显示出来呢
那肯定是json被转化成二进制数据的时候,json自己根据拿到的文本数据做了结构,然后吧这个结构的信息也变成二进制的数据发给服务器,只要服务器那边用json解析就可以了
写到这里,二进制协议和文本协议传输的优缺点就出来了

二进制协议的优点就是:同一个数据转化成,二进制协议的数据量相比文本协议的要小,因为不需要包含 定义数据的结构信息
文本协议的优点就是:不用去定义数据的传输结构,省下了开发时间

说白了二进制协议和文本协议传输的都是二进制数据,只不过二进制协议需要自己制定结构,而文本协议不需要

文本数据和比特流数据的区别:

比如要存储一个 数字:12141618

文本数据:存储数据格式 是字符串,按照utf-8,一个字符两个字节的话,就是需要16个字节。

比特流数据: 只需要一个 int32 就行,4个字节。

相比来说,比特流数据更小,但是有一个问题就是,如果我,有一个结构,int,float,string,这样的话我就需要自己写结构去解析比特流数据,通用性小。相比交下,文本数据就是通用性高,但是都是用字符转化之后的字节存储的,所以存储空间会消耗的大一些;比如客户端经常用到的 策划数据表,用比特流的方式可能就 几十K,但是用文本数据的形式就会几M。

如有错误,请大佬指正,以免误导祖国的花朵

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值