#coding=utf8#!/usr/bin/python
importstruct,socket,sysimporthashlibimportthreading,randomimporttimefrom base64 importb64encode, b64decode
connectionlist={}#python3k 版本recv返回字节数组
defdecode(data):if notlen(data):returnFalse
length= data[1] & 127
if length == 126:
mask= data[4:8]
raw= data[8:]elif length == 127:
mask= data[10:14]
raw= data[14:]else:
mask= data[2:6]
raw= data[6:]
ret= ''
for cnt, d inenumerate(raw):
ret+= chr(d ^ mask[cnt%4])returnretdefencode(data):
data=str.encode(data)
head= b'\x81'
if len(data) < 126:
head+= struct.pack('B', len(data))elif len(data) <= 0xFFFF:
head+= struct.pack('!BH', 126, len(data))else:
head+= struct