python sendall_为什么Python里的s.sendall()不能发送数值型数据,如果要发送数值型数据那怎么办?...

按照python来说,网络上传送的都是bytes类型的数据,其他数据是无法传输的。

1、你说的str类型,是必须编码解码的。常用的方式是采用utf8来传输str类型数据。

所以在传输之前需要约定编码格式和可用的数据类型。

用python来表达就是:

'some 数据'.encode('utf8')

2、数字型数据传输,是需要指定长度和字节序的。当然,一般是使用32位长度和网络字节序。用Python来表达就是: int.to_bytes(length, byteorder, *, signed=False) -> bytes

(3456).to_bytes(4, 'big')

3、一般来说,这是一个序列化和反序列化的过程。

常见的格式包括固定长度协议、固定分隔符协议、长度+报文格式协议、iso8583协议、xml格式协议、json格式协议、http格式协议等等。

http因为不是一个应用层协议,所以用来传输非html内容的时候还需要包装一层。

以上速度最快的就是固定长度格式协议,缺点是指定了key;

这玩意就是一个C语言里面struct,能直接写入和读取,所以当然快了。

对于key不固定的报文,目前最好的是msgpack方式。速度和大小都是最好的。

google和fb等几个公司自己也都造了一些格式出来,但是测试发现都不如msgpack好。

最差劲的是xml格式,速度和大小都是最次的。当然,这也是java最喜欢用的方式

最后,其实网络协议和数据库格式这些东西都一样,都是数据的封装方式罢了。

了解了这个东西,自己随便设计数据库也非常简单了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值