说明

区间适配器,一般用于字符串类的消息,类似“Hello##”,该数据,以开头,以##结尾。当然,区间适配器也能用于二进制数据,但是会有概率发生标识重复的情况。所以,用于二进制时,应当设置较复杂的区间标识。

使用

  1. class MyCustomBetweenAndDataHandlingAdapter : CustomBetweenAndDataHandlingAdapter<MyBetweenAndRequestInfo>
  2. {
  3. public MyCustomBetweenAndDataHandlingAdapter()
  4. {
  5. this.MinSize = 5;//表示,实际数据体不会小于5,例如“**12##12##”数据,解析后会解析成“12##12”
  6. }
  7. public override byte[] StartCode => Encoding.UTF8.GetBytes("**");//可以为0长度字节,意味着没有起始标识。
  8. public override byte[] EndCode => Encoding.UTF8.GetBytes("##");//必须为有效值。
  9. protected override MyBetweenAndRequestInfo GetInstance()
  10. {
  11. throw new NotImplementedException();
  12. }
  13. }
  14. /// <summary>
  15. /// 以**12##12##,Min=5为例。
  16. /// </summary>
  17. class MyBetweenAndRequestInfo : IBetweenAndRequestInfo
  18. {
  19. public void OnParsingBody(byte[] body)
  20. {
  21. //这里的Body应该为12##12
  22. }
  23. public bool OnParsingEndCode(byte[] endCode)
  24. {
  25. return true;//该返回值决定,是否执行Receive
  26. }
  27. public bool OnParsingStartCode(byte[] startCode)
  28. {
  29. return true;
  30. }
  31. }