python之路——33
复习
1.为什么会出现黏包问题
1.首先只有TCP协议中才会出现黏包
2.TCP是面向流的协议
3.在数据传输的过程中使用缓存机制来避免数据丢失
4.因此在连续发送小数据时,或接受大小不符的时候会出现黏包问题
5.本质是因为,接收数据的时候不知道发送数据的长短
2.解决黏包问题
1.在传输大量数据之前,先告诉接收端要发送的数据大小
2.通过struct模块来定制协议
学习内容
1.检测用户合法性
2.学会看源码
1.多个类之间的继承关系要先整理
2.每一个类中的方法,大致列出来
3.所有self对象的调用要清楚了解,到底是谁的对象
4.所有的方法调用要退回到最子类的类中开始寻找,逐级向上
代码区
1.验证客户端合法性
# client import socket import hmac secret_key = b'egg' sk = socket.socket() sk.connect(('127.0.0.1', 8080)) msg = sk.recv(1024) h = hmac.new(secret_key, msg) client_digest = h.digest() sk.send(client_digest) # server import socket import os import hmac secret_key = b'egg' sk = socket.socket() sk.bind(('127.0.0.1',8080)) sk.listen() def cherk_conn(conn): msg = os.urandom(32) conn.send(msg) h = hmac.new(secret_key, msg) digest = h.digest() client_digest = conn.recv(1024) return hmac.compare_digest(digest, client_digest) conn, addr = sk.accept() res = cherk_conn(conn) if res: print('legal client') conn.close() else: print('illegal client') conn.close() sk.close()
SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。

更多精彩