/// <summary> /// 缓存中的数据处理,收到消息后先解码 /// </summary> private void OnData() { //长度解码 byte[] result = LengthEncoding.Decode(ref cache); //长度解码为空,说明消息体不全,等待下条消息过来补全 if (result == null) { isReading = false; return; } SocketModel messsage = (SocketModel)MessageEncoding.MessageDecode(result); if (messsage == null) { isReading = false; return; } //进行消息处理 messages.Add(messsage); //尾递归 防止在消息处理过程中 有其他消息到达而没有经过处理 OnData(); }