zoukankan      html  css  js  c++  java
  • 位解包运算

    # 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
  • 相关阅读:
    java+根据多个url批量下载文件
    js拖拽文件夹上传
    php文件夹上传
    java上传大文件解决方案
    web文件系统
    WebService之CXF注解之三(Service接口实现类)
    oracle 推断字符是否为字母
    二分查找算法
    C# 杀掉后台进程
    (个人开源)ffpanel --ffmpeg的GUI,让ffmpeg离开黑黑的命令行
  • 原文地址:https://www.cnblogs.com/yunxintryyoubest/p/10016102.html
Copyright © 2011-2022 走看看