如下图,先接收了包头,然后while循环根据拿到的包体长度recv数据。但是发现越往后执行,用len()取到的包体长度跟包头中得到的包体长度开始变得不一致了。求大神解答,网上的解决方案我都试的差不多了,没一个行得通。
bodySize: 6
recv接收的长度是: 298
相关问题
- how to define constructor for Python's new Nam
- streaming md5sum of contents of a large remote tar
- How to get the background from multiple images by
- Evil ctypes hack in python
- Correctly parse PDF paragraphs with Python
你说的应该是粘包问题。 recv是缓冲模式的读取,具体的长度需要你自己处理才行
楼主自己解决了这个问题,其实recv(len)已经接受全了返回数据,但是楼主忽略了服务器主动推的数据(PS:游戏是用的长连接),所以后来解码的时候老是报错。
解决办法:对接受到的包头header_bytes[1]进行判断,如果等于我需要的GS2C,那么进行解码。