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
  • 相关阅读:
    我的IT之路2011(二)
    用三层架构画类图的基本结构
    计算机教育学术交流会
    我的IT之路2011(一)
    Canvas中元素的定位
    对话框中的数据绑定(WPF)
    {Binding}详释 (WPF)
    Polyline的问题
    How do I sort groups of data items?(WPF)
    Excel Services OverView系列--3使用Excel Web Services操作Excel工作薄
  • 原文地址:https://www.cnblogs.com/yunxintryyoubest/p/10016102.html
Copyright © 2011-2022 走看看