# info=conn.recv(8096) # payload_len=info[1] &127 ##拿到这payload的值 # if payload_len==126: # extend_payload_len==info[2:4] #这个是头部信息,这个会往后面多占16位,就是前面的2个字节加上后面加上的4个字节,头部信息就是4个字节 # mask=info[4:8] # decodeed=info[8:] # ###########这个decoded是数据信息 # elif payload_len ==127: # ##########注明一下,这个投币想你想,之前是固占2个字节的,如果是127的话,那么这个就往后面占10个字节(这个是头部信息),mask_key这个是占4个字节 # extend_payload_len==info[2:10] # mask=info[10:14] # decodeed=info[14:] # # 这个就是数据了 # # else: # extend_payload_len=None # mask=info[2:6] # decodeed=info[6:] # # bytes_list=bytearray() # # for i in range(len(decodeed)): # chunk=decodeed[i] ^ mask[i%4] # ##这个amsk是进行解密的,mask_key对数据发送过来的,后面的数据是加密的, 而amsk_key是进行解密的,解密过程是往这个数据一个一个号字节的 # ##拿,而这个解密是一个个的解密 # bytes_list.append(chunk) # # body=str(bytes_list,encoding='utf-8') # # print(body) # # # #注明一下,OX这个是16进制的 #加一个消息头,就可以判断这个消息什么时候结束了 def send_msg(conn,msg_bytes): import struct token=b'81' length=len(msg_bytes) if length<126: #3注明一下 ,如果你发的数据小于126的话,就以下面的B这种方式打包,下面的代表了规则 token+=struct.pack('B',length) elif length<=0XFFFF: token+=struct.pack('!BH',126,length) else: token+=struct.pack('!BQ',127,length) msg=token+msg_bytes conn.send(msg) return True