Python WebSocket接收原始字节
我一直在使用pythonPython WebSocket接收原始字节,python,websocket,encoding,character-encoding,byte,Python,Websocket,Encoding,Character Encoding,Byte,我一直在使用pythonwebsockets8.1版本的库。这是一个接收字符串数据的好工具,但现在我已经体验到需要接收字符串和字节数据的混合 让我解释一下 有一个套接字,它使用算法对数据进行编码,该算法使用字符代码作为数字 例如,在消息的开头有一个字符c,其ord(c)==777。然而,这并不意味着这是人类读到的chr(777)。例如,它表示客户端获得的消息类型。这是一条类型为777的消息,有一种算法可以处理这类消息。下一个字符将表示消息的长度。等等 不过,有一个问题。有一条消息,其类型为0,表
websockets
8.1版本的库。这是一个接收字符串数据的好工具,但现在我已经体验到需要接收字符串和字节数据的混合
让我解释一下
有一个套接字,它使用算法对数据进行编码,该算法使用字符代码作为数字
例如,在消息的开头有一个字符c
,其ord(c)==777
。然而,这并不意味着这是人类读到的chr(777)
。例如,它表示客户端获得的消息类型。这是一条类型为777
的消息,有一种算法可以处理这类消息。下一个字符将表示消息的长度。等等
不过,有一个问题。有一条消息,其类型为0
,表示NUL
字节。当客户端收到这样一个字符串时,出于某种原因,Python
或websockets
recv
方法将其解释为空格
字符,结果是ord(c)==32
而不是ord(c)==0
。这显然使整个信息不正确。我可以将32替换为0,反之亦然,但这会导致更多错误,因为这些字符不可交换
我想,如果我收到的是
bytes
而不是str
,那么问题就会消失了?但我似乎找不到解决这个问题的方法。也许,过去有人在python
和/或websockets
错误处理不可读字符方面有过这样的经验?您可以使用struct模块构建数据包