You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
154 lines
5.5 KiB
154 lines
5.5 KiB
//------------------------------------------------------------------------------ |
|
// 此代码版权(除特别声明或在XREF结尾的命名空间的代码)归作者本人若汝棋茗所有 |
|
// 源代码使用协议遵循本仓库的开源协议及附加协议,若本仓库没有设置,则按MIT开源协议授权 |
|
// CSDN博客:https://blog.csdn.net/qq_40374647 |
|
// 哔哩哔哩视频:https://space.bilibili.com/94253567 |
|
// Gitee源代码仓库:https://gitee.com/RRQM_Home |
|
// Github源代码仓库:https://github.com/RRQM |
|
// API首页:https://www.yuque.com/rrqm/touchsocket/index |
|
// 交流QQ群:234762506 |
|
// 感谢您的下载和使用 |
|
//------------------------------------------------------------------------------ |
|
//------------------------------------------------------------------------------ |
|
|
|
//using TouchSocket.Core; |
|
//using System.Collections.Generic; |
|
//using System.Text; |
|
//using System.Text.RegularExpressions; |
|
|
|
//namespace TouchSocket.Sockets |
|
//{ |
|
// /// <summary> |
|
// /// Json字符串数据处理解析器(该解析器由网友"明月"提供) |
|
// /// </summary> |
|
// public class JsonStringDataHandlingAdapter : CustomDataHandlingAdapter<JsonRequestInfo> |
|
// { |
|
// private ByteBlock Temp; |
|
|
|
// /// <summary> |
|
// /// <inheritdoc/> |
|
// /// </summary> |
|
// public override bool CanSplicingSend => false; |
|
|
|
// /// <summary> |
|
// /// 预解析 |
|
// /// </summary> |
|
// /// <param name="byteBlock"></param> |
|
// protected override void PreviewReceived(ByteBlock byteBlock) |
|
// { |
|
// byte[] buffer = byteBlock.Buffer; |
|
// int length = byteBlock.Len; |
|
|
|
// //Console.WriteLine("----------------接收的新数据-------------------"); |
|
// if (Temp != null) |
|
// { |
|
// Temp.Write(byteBlock.Buffer, 0, length); |
|
// buffer = Temp.Buffer; |
|
// length = (int)Temp.Length; |
|
// } |
|
|
|
// string msg = Encoding.UTF8.GetString(buffer, 0, length); |
|
// if (msg.Contains("}{")) |
|
// { |
|
// //Console.WriteLine("----------------发生粘包-------------------"); |
|
// string[] mes = Regex.Split(msg, "}{"); |
|
// for (int i = 0; i < mes.Length; i++) |
|
// { |
|
// string str = mes[i]; |
|
// if (i == 0) |
|
// { |
|
// str += "}"; |
|
// } |
|
// else if (i == mes.Length - 1) |
|
// { |
|
// str = "{" + str; |
|
// int start = StringCount(str, "{"); |
|
// int end = StringCount(str, "}"); |
|
// if (start == end) |
|
// { |
|
// if (Temp != null) |
|
// { |
|
// Temp = null; |
|
// } |
|
// } |
|
// else |
|
// { |
|
// byte[] surPlus = Encoding.UTF8.GetBytes(str); |
|
|
|
// if (Temp != null) |
|
// { |
|
// Temp = null; |
|
// } |
|
// //Temp = BytePool.GetByteBlock(1024*1024*10); |
|
// Temp = BytePool.GetByteBlock(length); |
|
|
|
// Temp.Write(surPlus); |
|
// //Console.WriteLine("----------------数据不完整-------------------"); |
|
// break; |
|
// } |
|
// } |
|
// else |
|
// { |
|
// str = "{" + str + "}"; |
|
// } |
|
// //Console.WriteLine(str); |
|
// PreviewHandle(str); |
|
// } |
|
// } |
|
// else if (msg[0] == '{' && msg[1] == '}') |
|
// { |
|
// Temp = null; |
|
// PreviewHandle(msg); |
|
// } |
|
// else |
|
// { |
|
// if (Temp == null) |
|
// { |
|
// Temp = BytePool.GetByteBlock(length); |
|
// Temp.Write(byteBlock.Buffer, 0, length); |
|
// } |
|
|
|
// Temp.Write(byteBlock.Buffer, 0, length); |
|
// } |
|
// } |
|
|
|
// /// <summary> |
|
// /// 预发送封装 |
|
// /// </summary> |
|
// /// <param name="buffer"></param> |
|
// /// <param name="offset"></param> |
|
// /// <param name="length"></param> |
|
// /// <param name="isAsync"></param> |
|
// protected override void PreviewSend(byte[] buffer, int offset, int length, bool isAsync) |
|
// { |
|
// this.GoSend(buffer, offset, length, isAsync); |
|
// } |
|
|
|
// private int StringCount(string source, string match) |
|
// { |
|
// int count = 0; |
|
// if (source.Contains(match)) |
|
// { |
|
// string temp = source.Replace(match, ""); |
|
// count = (source.Length - temp.Length) / match.Length; |
|
// } |
|
// return count; |
|
// } |
|
|
|
// private void PreviewHandle(string msg) |
|
// { |
|
// GoReceived(null, msg); |
|
// } |
|
|
|
// protected override FilterResult Filter(ByteBlock byteBlock, bool beCached, ref JsonRequestInfo request, ref int tempCapacity) |
|
// { |
|
// } |
|
// } |
|
|
|
// /// <summary> |
|
// /// json解析 |
|
// /// </summary> |
|
// public class JsonRequestInfo:IRequestInfo |
|
// { |
|
// } |
|
//} |