Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/280.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python WebSocket接收原始字节_Python_Websocket_Encoding_Character Encoding_Byte - Fatal编程技术网

Python WebSocket接收原始字节

Python WebSocket接收原始字节,python,websocket,encoding,character-encoding,byte,Python,Websocket,Encoding,Character Encoding,Byte,我一直在使用pythonwebsockets8.1版本的库。这是一个接收字符串数据的好工具,但现在我已经体验到需要接收字符串和字节数据的混合 让我解释一下 有一个套接字,它使用算法对数据进行编码,该算法使用字符代码作为数字 例如,在消息的开头有一个字符c,其ord(c)==777。然而,这并不意味着这是人类读到的chr(777)。例如,它表示客户端获得的消息类型。这是一条类型为777的消息,有一种算法可以处理这类消息。下一个字符将表示消息的长度。等等 不过,有一个问题。有一条消息,其类型为0,表

我一直在使用python
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模块构建数据包