美文网首页
Python socket 解析客户端数据

Python socket 解析客户端数据

作者: wangtieshan | 来源:发表于2018-05-31 14:17 被阅读0次

    socket 发送和接受数据都是有一定要求的

    socket 的数据其长度信息和真实内容都是需要解析才能得到的

    如下解析数据,都有详细注释

    def parse_data(self, msg):

        if len(msg) == 0:
            return  ''
    
        # 去除二进制中的第1位
        v = ord(msg[1]) & 0x7f
    
        # p 掩码的开始位
    
        # 1位如果是 126 表接下来的两个字节才是长度
        # 接下来两个是长度,加上0位和1位,就是 4 位开始掩码
        if v == 0x7e:
            p = 4
    
        # 1位 127 表接下来的八个字节才是长度
        # 接下来 8 个代表长度,加上 0 and 1 则是 10 开始掩码
        elif v == 0x7f:
            p = 10
    
        # 1 位 1-125 则本身代表长度
        # 0 and 1 则 2 开始掩码
        else:
            p = 2
    
        # mark 掩码为包长之后的 4 个字节
        mask = msg[p:p + 4]
        data = msg[p + 4:]
    
        #print 'mask num is \n %s' % [ord(v) for v in mask]
    
        #print 'mask little num is \n %s' % [ord(v) & 0x7f for v in mask]
    
        #print 'mask is \n %s' % [chr(ord(v) & 0x7f) for v in mask]
    
        ori = ''.join([chr(ord(v) ^ ord(mask[k % 4])) for k, v in enumerate(data)])
    
        print 'origin data is \n %s' % ori
    
        return ori

    相关文章

      网友评论

          本文标题:Python socket 解析客户端数据

          本文链接:https://www.haomeiwen.com/subject/auyqsftx.html