python学习第二十五节(粘包)

socket复习
from socket import *这种写法不要写
绑定网卡的时候,"" 这种代表本机所有地址,127也是本机IP 回环地址,外面是进不来的。
127.0.0.1 只能本机的网卡访问这个IP ,外网的是访问不了127的。

解决命令返回值为空的时候卡死的状态,如上图

UDP:

上图为服务端:
下图为客户端

粘包:
time
struct 先写一个报头,json序列化,将报头的长度取出来,发送报头长度,发送报头,发送数据。

利用超时规则,sleep3秒解决粘包问题。

也可以利用更改recv()内的数字,更改它缓存的数量。

import struct模块
res=struct.pack('i',123123123123) #将数据打包成4个数字的长度
print(res)
len(res)

struct.unpack('i',res)[0]
(123123123123,) #解包之后是一个元组的格式,索引是0的为内容,所以需要[0]

利用struct取报头长度方法解决粘包问题:import socket

以上为SERVER端

上面如图,是客户端写法。
下面如图,是将报头写成字典的模式,再用struct的方法取值发送:

如下图,是上面写法的client写法:

 

posted @ 2017-07-18 15:18  铠甲巨人  阅读(154)  评论(0编辑  收藏  举报