longlong105 发表于 2020-10-4 06:39:28

c# WINFORM 双机RS485通信,数据可以进行GZIP压缩传送吗?

c# WINFORM 双机RS485通信,数据可以进行GZIP压缩传送吗?
设备:两台 windows 10 PC
功能:运行相同的程序,分别从设备不同的485端口读取数据并显示
需求:两台PC 之间相互独立,参数配置需要在两台PC上单独设置,现想通过增加RS485来实现参数配置文件同步功能!(现场环境因素现在,只能增加RS485接口)
疑问:使用GZIP 压缩后,传送 是否有在项目中使用过?是否适合这样做?


测试主要代码如下!
/// <summary>
      /// 压缩字节数组
      /// </summary>
      /// <param name="str"></param>
      public static byte[] Compress(byte[] inputBytes)
      {
            using (MemoryStream outStream = new MemoryStream())
            {
                using (GZipStream zipStream = new GZipStream(outStream, CompressionMode.Compress, true))
                {
                  zipStream.Write(inputBytes, 0, inputBytes.Length);
                  zipStream.Close(); //很重要,必须关闭,否则无法正确解压
                  return outStream.ToArray();
                }
            }
      }

      /// <summary>
      /// 解压缩字节数组
      /// </summary>
      /// <param name="str"></param>
      public static byte[] Decompress(byte[] inputBytes)
      {

            using (MemoryStream inputStream = new MemoryStream(inputBytes))
            {
                using (MemoryStream outStream = new MemoryStream())
                {
                  using (GZipStream zipStream = new GZipStream(inputStream, CompressionMode.Decompress))
                  {
                        zipStream.CopyTo(outStream);
                        zipStream.Close();
                        return outStream.ToArray();
                  }
                }

            }
      }

thepresent 发表于 2020-10-4 09:57:50

保险起见至少加个校验吧,校验不通过就重发。你测试一下校验不通过的比例。而且数据量比大的话,加个帧头吧

gwnpeter 发表于 2020-10-4 10:22:12

有没有考虑过一个字节出错(或丢失)的时候,整个流是否都会出错的问题?

longlong105 发表于 2020-10-4 20:29:03

gwnpeter 发表于 2020-10-4 10:22
有没有考虑过一个字节出错(或丢失)的时候,整个流是否都会出错的问题? ...

这些是要考虑,个人理解,数据不符合gzip格式,解析就会出错!


Himem 发表于 2020-10-5 07:32:44

数据大概多长?

longlong105 发表于 2020-10-5 07:54:35

Himem 发表于 2020-10-5 07:32
数据大概多长?

大概有3k 数据!

Himem 发表于 2020-10-5 08:08:13

本帖最后由 Himem 于 2020-10-5 08:10 编辑

longlong105 发表于 2020-10-5 07:54
大概有3k 数据!

那应该还好
再加个帧头尾就行,gz自带校验

再长就要考虑分包重传或/纠错码了
页: [1]
查看完整版本: c# WINFORM 双机RS485通信,数据可以进行GZIP压缩传送吗?