- 就很倒霉
- 因为我是按照unity网络编程那个框架学的,学到第四章,就自己开始撸代码了
- 所以提前碰到了粘包问题。在这里记录一下
- 起因是我写的错误代码
- 如果不存在对应消息的处理函数,那就直接把消息转发给所有客户端
- 但是目前的逻辑是先调用处理函数,再直接转发给所有客户端
- 因为两个发送信息距离很近,就导致产生了粘包。
- 服务器端发送了两条信息一共6字节
- 客户端在buffer里面全部收到了,无法解析,导致bug
if (Dispatch.IsExistHandler(opCode))
{
Dispatch.DispatchMsg(opCode, instance, connectSocket);
}
BroadCastClientsMsg(readBuffer, count);
-
服务端发送
-
因为我广播哪里代码写错了,导致我以为一直发送的是一条消息4个字节
-
客户端接收两条消息,导致解析错误