为什么websocket获取超过126字节时接收到的数据不一致?

服务端在读取超过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);

请有经验的朋友帮帮忙, 找了两天都没发现是什么原因导致的, 谢谢.

阅读 3.4k
1 个回答

已经解决, 原因是wireshark捕获到的数据是客户端发送给网关的, 网关修改了包的数据,然后将错误的数据发送给了客户端.

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进