楼主自己解决了这个问题,其实recv(len)已经接受全了返回数据,但是楼主忽略了服务器主动推的数据(PS:游戏是用的长连接),所以后来解码的时候老是报错。
解决办法:对接受到的包头header_bytes[1]进行判断,如果等于我需要的GS2C,那么进行解码。
你说的应该是粘包问题。 recv是缓冲模式的读取,具体的长度需要你自己处理才行
意思是我根据bodysize取的只是缓存里的数据,而缓存里是可能不止这一次请求返回的完整包,所以recv(8)那边就已经出问题了,可能取出的都不是包头,只是缓存里前8个数据而已?
@输了怪队友: 请问这个问题怎么解决呀?我recv(8)里边是文件大小,然后根据文件大小来接收数据,但每次recv(8)数据都不准确。能请教一下吗?搞了好几天都没弄好。。。