服务端在读取超过126字节的数据时, recv到的数据与抓包的数据不一致.
websocket超过126字节时会根据包头第3个和第4个字节来获取长度, 但是我遇到的这问题大于126字节的包头数据都会变成00 7E(126), 在解析时就会出现错误.
这是通过WireShark抓包的数据, 长度为00 C8(200):
这是在VS中查看recv函数的内存情况, 变成了00 7E(126):
已经是底层的recv, 同时已经排除其他线程修改m_buf数据, Tcp出问题的可能性也不大.
char *buf = m_buf;
n = recv(GetSocket(), buf, TCP_BUFSIZE_READ, MSG_NOSIGNAL);
请有经验的朋友帮帮忙, 找了两天都没发现是什么原因导致的, 谢谢.
已经解决, 原因是wireshark捕获到的数据是客户端发送给网关的, 网关修改了包的数据,然后将错误的数据发送给了客户端.