美文网首页
Python 3.5.2实现websocket服务端(一):ge

Python 3.5.2实现websocket服务端(一):ge

作者: 老胡写着玩 | 来源:发表于2017-09-13 11:38 被阅读0次

    WebSocket 传输内容支持文本或二进制数据,这些数据的边界靠帧(frame)来维护,其中帧的第二个字节低7位用来表示信息内容的长度(payload len)。
    数据长度一共有三种情况,全都由低7位的值认定,如果取值在126以内,不包括126,则数据真实长度就是低7位的值。如果取值为126,则需要额外的两个字节来表示数据的真实长度,16位的无符号整数。如果取值127,那么需要额外的8个字节表示数据的真实长度,64位的无符号整数。

    # 计算web端提交的数据长度并返回
    def get_datalength(msg):
        global g_code_length
        global g_header_length
        g_code_length = msg[1] & 127
        if g_code_length == 126:
            g_code_length = struct.unpack('>H', msg[2:4])[0]
            g_header_length = 8
        elif g_code_length == 127:
            g_code_length = struct.unpack('>Q', msg[2:10])[0]
            g_header_length = 14
        else:  
            g_header_length = 6  
        g_code_length = int(g_code_length)
        return g_code_length  
    

    说明

    1. 此函数参数为通过sock.recv接受到的bytes流
    2. 此函数引用了两个全局变量g_code_length、g_header_length,分别用来说明接收的信息中头部长度和实际载荷长度

    相关文章

      网友评论

          本文标题:Python 3.5.2实现websocket服务端(一):ge

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