通过网络发送的数据的字符串压缩/解压缩[关闭]

2024-03-30

我正在寻找 C# 中的字符串压缩方法,可以在将数据字符串写入网络套接字之前对其运行?我对任何类型的压缩都相当陌生,因此我在这里寻求一些建议/指导。

WHY?

这在运行在服务器上的应用程序中是必需的,该服务器不断地将消息发送到我们的另一台服务器,但是托管应用程序的服务器是根据使用的数据计费的,这是相当昂贵的。移动托管不是一个选择。

所以我需要一个算法/库,它可以有效地(CPU 方面)压缩我们发送的刺消息。我愿意牺牲一些CPU使用率来换取更少的网络数据。

我不确定人们期望什么类型的压缩比,我认为这取决于您发送的字符串消息的类型及其长度。

我正在查看相当短的字符串,平均长度从 100 个字符到 256 个字符不等。有一个奇怪的长度约为 900 个字符。

字符串示例:

žŸKO9404ŸMR4ŸTT8DB3CŸTM08:50:26.253ŸDIVFSV09

这是一个更长的例子:

žŸAC15019ŸCI1602ŸSC7ŸZN001ŸPN01ŸFT7F55ŸCLSGKNetworkŸTP1ŸMR0ŸTT9733EŸIDGPAM01;GPAM02;GPAM03;GPAM05;GPAM04;GPAM06;GPAM07;GPAM08;GPAM09;GPAM10;GPAM02;GPAM03;GPAM04;GPAM05;GPAM06;GPAM07;GPAM08;GPAM09;GPAM10;GPAM01ŸTM09:01:08.858;09:01:09.066;09:01:09.043;09:01:09.044;09:01:09.066;09:01:09.066;09:01:09.065;09:01:09.068;09:01:09.067;09:01:09.067;09:01:50.395;09:01:50.386;09:01:50.386;09:01:50.386;09:01:50.396;09:01:50.384;09:01:50.385;09:01:50.386;09:01:50.386;09:01:50.384ŸTG584C;584C;584C;584C;584C;584C;584C;584C;584C;584C;589F;589F;589F;589F;589F;589F;589F;589F;589F;589F

所以我正在寻找一种可以在发送服务器上压缩,然后在接收服务器上解压缩的解决方案。

我最好的解决方案是什么?


  • LZO 压缩:有关更多信息:http://www.oberhumer.com/opensource/lzo/ http://www.oberhumer.com/opensource/lzo/
  • GZip 压缩:有关更多信息:http://msdn.microsoft.com/tr-tr/library/system.io.compression.gzipstream%28v=vs.110%29.aspx http://msdn.microsoft.com/tr-tr/library/system.io.compression.gzipstream%28v=vs.110%29.aspx
  • 快速 LZ 压缩:有关更多信息:http://www.quicklz.com/index.php http://www.quicklz.com/index.php

用于压缩的 Gzip 示例:

    System.IO.MemoryStream ms = new System.IO.MemoryStream();
    System.IO.Compression.GZipStream sw = new System.IO.Compression.GZipStream(ms, System.IO.Compression.CompressionMode.Compress);

    //Compress
    sw.Write ...
    sw.Close();

用于解压缩的 Gzip 示例:

    System.IO.MemoryStream ms = new System.IO.MemoryStream(byteArray);
    System.IO.Compression.GZipStream sr = new System.IO.Compression.GZipStream(ms,
        System.IO.Compression.CompressionMode.Decompress);

    //Decompress
    int rByte = sr.Read ...
    sr.Close();
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

通过网络发送的数据的字符串压缩/解压缩[关闭] 的相关文章

  • 如何使用 ILoggerFactory 记录 Polly 的重试

    或者 如何从静态方法记录 From https github com App vNext Polly https github com App vNext Polly你有这样的例子 其中记录器神奇地可用 Policy Timeout 30
  • Linux 使用 boost asio 拒绝套接字绑定权限

    我在绑定套接字时遇到问题 并且以用户身份运行程序时权限被拒绝 这行代码会产生错误 acceptor new boost asio ip tcp acceptor io boost asio ip tcp endpoint boost asi
  • 使用 JSON 格式正确配置 NLog 到 IHostBuilder

    我有以下代码 应该接受 NLog 的 JSON appsettings 配置 然后使用它来创建 NLog LogFactory 这个 NLog 工厂应该被传递到 MyService 类中 以便在那里创建一个记录器 class Program
  • 每次调用新方法时触发事件

    我正在做一个logger for a c 应用程序需要记录每个方法被调用的时间以及每个方法执行时间 我可以通过调用自己的方法来做到这一点EventLogger LogMethodCall方法在每个方法的开头 但我想知道是否有办法使CLR每次
  • 在 DataGridView 中隐藏行非常慢

    我在 Winforms 应用程序中有一个 DataGridView 大约有 1000 行 未绑定 和 50 列 隐藏一列需要整整 2 秒 当我想隐藏大约一半的行时 这就成为一个问题 private void ShowRows string
  • 如何使用boost库读取和写入.ini文件[重复]

    这个问题在这里已经有答案了 如何使用boost库读取和写入 或修改 ini文件 With Boost PropertyTree您可以读取并更新树 然后写入文件 请参阅load and save功能 看一下如何访问属性树中的数据 http w
  • 读取STM32 MCU SPI数据寄存器的值

    有很多类似的问题 但似乎没有一个问题完全相同 我正在将 STML4 MCU 连接到 6 轴传感器 LSM6DS3 我已经成功地在 I2C 中实现了所有内容 但想要 SPI 的额外速度 和 DMA 如果我能让这些第一步工作起来的话 因此 第一
  • 是否有一种算法可以在线性时间内计算数组反转?

    我知道有多少倒转 en wikipedia org wiki Inversion 28discrete mathematics 29 in an n 元素数组可以在 O n log n 操作使用增强型归并排序 http www geeksf
  • 如何强制用户仅使用“new”创建从我派生的类的对象?

    为了实现引用计数 我们使用IUnknown http msdn microsoft com en us library ms680509 VS 85 aspx类接口和智能指针模板类 该接口具有所有引用计数方法的实现 包括Release vo
  • 如何填充两个样条线或直线系列之间的区域

    我有这个Chart 如何填充两个之间的区域Series S0 and S1 说蓝色和黄色Series 为此 我们编写了其中之一Paint事件 这里的ValueToPixelPosition https msdn microsoft com
  • C++ 错误:从“char”到“const char*”的转换无效

    我对 C 完全陌生 我创建了这个函数 bool guessWord string compWord cout lt lt Guess a letter string userLetter cin gt gt userLetter for u
  • 使用 INotifyPropertyChanged

    有人可以解释一下为什么在 wpf 中使用绑定时需要使用 INotifyPropertyChanged 的 实现吗 我可以在不实现此接口的情况下绑定属性吗 例如我有代码 public class StudentData INotifyProp
  • 带双重检查锁的单例设计模式

    假设您有以下代码 1 为什么我们使用双重检查锁 为什么单锁不够好 请提供详细的例子 2 这种实施方式的主要缺点是什么 我该如何证明呢 Thanks public sealed class SomeSingleton5 private sta
  • 使用 QGraphicsScene 实现流畅的动画

    我希望我的问题并不总是同样的问题 我有一个 QGraphicsScene 它的项目是一些 QGraphicsPixmap 我用一个计时器来移动它们 每秒 SetX 10 我设置 10是因为窗口大100 使用这个解决方案我的动画不流畅 我想我
  • 该组件没有由 uri 标识的资源

    我想创建一个通用数据网格以在我的所有视图 用户控件上使用 这是我的结构 Class Library called Core Class called ViewBase public class ViewBase UserControl pu
  • TreeView:仅在子节点中存在复选框

    我需要一个树视图控件 根节点没有复选框 只有图像 所有子节点都有一个复选框 图像 C net 2 0 winforms 不是 wpf WinForms树视图默认不支持混合复选框 非复选框节点 您可以在树视图上全局启用复选框 并使用以下命令在
  • 参数数量在编译时确定的 Lambda 函数

    我想声明一个带有 N 个参数的 lambda 函数 其中 N 是模板参数 就像是 template
  • 字符串 c 的二叉树

    我正在尝试实现一个能够在 c 中保存字符串的二叉树 在让代码适用于整数之后 我尝试稍微修改它以处理字符数组 现在我似乎完全破解了代码 但不知道如何破解 任何帮助表示赞赏 include
  • 如何在用户空间程序中使用内核 libcrc32c (或相同的函数)?

    我想在我自己的用户空间程序中进行一些 CRC 检查 我发现内核加密库已经在系统中 并且支持 SSE4 2 我尝试直接 include
  • 类模板的 C++ 静态成员 - 链接器警告“多重定义”[重复]

    这个问题在这里已经有答案了 假设出于某种原因 我想要一个类模板 MyTemp 和一些静态数据成员 smDummyVar Mytemp h ifndef MY TEMP H define MY TEMP H template

随机推荐

  • Angular 2在路由中排除url

    我已经使用角度实现了路由 如下所示 export const routes RouterConfig path component HomeComponent path component SearchComponent 我需要匹配所有默认
  • 修改二维 ruby​​ 数组有困难

    新手问题请见谅 我正在尝试在 ruby 中创建一个二维数组 并将其所有值初始化为 1 我的代码可以很好地创建二维数组 但无法修改其任何值 谁能解释我做错了什么 def mda width height make a two dimensio
  • collectionViewContentSize() 与 contentSize

    有什么区别 collectionViewController collectionViewLayout collectionViewContentSize and collectionViewController collectionVie
  • SQL Server 数据工具忽略架构比较的重构

    我遇到了与此处描述的问题看似相同的问题 架构比较脚本生成会忽略 SSDT 重构重命名 https stackoverflow com questions 20082079 ssdt refactor rename is ignored by
  • Hibernate 对于 Web 应用程序来说更安全吗?

    我有疑问是否Hibernate对于 Web 应用程序 JSP Servlet Hibernate MySQL 来说是安全的 它将获得 不同用户 一次 的数千个访问 我担心的原因如下 想象一下 我有一个供学校学生使用的网络应用程序 他们有自己
  • 如何从 Compass 输出压缩的 CSS?

    如何配置指南针以输出较小或压缩的 CSS 文件 我试过compass s compressed但这没有用 In your config rb file output style compressed More at http compass
  • 如何在 MFC 中创建 GUI

    我需要能够即时创建指南 MFC中有没有办法做到这一点 我了解了如何在 net 中做到这一点 但我们还没有做到这一点 如果没有 您是否有一些我可以使用的代码的指针 don t forget to add Rpcrt4 lib to your
  • 生成向量元素的所有可能组合的列表

    我正在尝试在长度为 14 的向量中生成 0 和 1 的所有可能组合 是否有一种简单的方法可以将输出作为向量列表 甚至更好 作为数据帧 为了更好地演示我正在寻找的内容 假设我只想要一个长度为 3 的向量 我希望能够生成以下内容 1 1 1 0
  • SQL Developer 清除脚本中的绑定变量

    我正在编写一个脚本 其中多个后续过程需要一个过程的输出 所以 我需要绑定变量 而不是替换变量 但是 每当使用该变量时 它就会被清除 这使得不可能多次使用变量的值 完全相同的脚本在 SQL Plus 中运行 我在下面制作了一个简短的脚本来演示
  • 警告:“继续”目标开关相当于“中断”。您的意思是使用“继续2”吗?

    我有 php7 3 和 symfony2 8 当我尝试使用控制台创建类时 出现此错误 Symfony Component Debug Exception ContextErrorException 警告 继续 目标开关相当于 中断 你的意思
  • 如何在kubernetes中指定Proxy Pass

    我的资产在 s3 上 我的服务部署在 kubernetes 上 是否可以在 nginx ingress conf 中定义代理传递 我当前的 nginx proxy pass 资产到 s3 我想在 kubernetes 中复制 locatio
  • 注册成功后如何分配角色?

    我正在使用 fos 用户捆绑包和 pugx 多用户捆绑包 我已阅读所有文档 并且我是 Symfony 的新手 在 pugx 多用户捆绑包中 每个点都有一个示例 但只有一个 成功注册 覆盖控制器的示例生成表格 gt 好的 覆盖模板的示例生成表
  • 为什么 Actor.receive 是偏函数?

    Why is Actor receive部分功能 我总是可以使用带有匹配表达式的正则函数来代替它 It is a PartialFunction捕获消息被处理或未处理的可能性Actor 未处理的消息将 不让演员失败MatchError 产卵
  • Laravel eloquent 获取数据库列中最常见的值

    从一个表animals我有以下值animal name column cat dog cat 我想从中提取 猫 这个词 因为它是该专栏中最流行 最常用的词 我如何使用 laravel eloquent 做到这一点 雄辩 App Animal
  • java.lang.String 类型中没有由 @DynamoDBHashKey 注释的方法或字段

    我不知道为什么不运行这个项目 Data DynamoDBTable tableName tableName public class entityName implements Serializable private static fin
  • 使用 JavaScript 将当前日期放入 PDF 表单的文本字段中

    我喜欢创建一个 PDF 打印时包含打印的日期和时间 因为实际更改 PDF 内容需要 PDF 编辑器 所以我认为使用 PDF 表单 即包含可填写表单的 PDF 其中一个文本字段会在打印 PDF 时自动更新为当前日期和时间 PDF 的实际创建不
  • 仅 Grep 第一个匹配项并停止

    我正在使用 grep 递归搜索目录 并使用以下参数希望只返回第一个匹配项 不幸的是 它返回了不止一个 事实上 我上次查看时返回了两个 似乎我有太多的争论 尤其是没有得到想要的结果 grep o a m 1 h r Pulsanti Oper
  • IO 的“最佳”ExecutionContext

    我的 Scala 代码中有一些同步调用 我将它们包装在阻塞 上下文中 然后包装在 Future Future blocking syncCall 中 但我不知道要使用哪种类型的 ExecutionContext 我知道可能有很多可能性 并且
  • 如何更正此错误:未找到数据源名称且未指定默认驱动程序

    我有一个在 Windows 服务器上运行的网站 它运行得很好 我尝试在本地主机中进行复制 但收到错误 Warning odbc connect function odbc connect SQL error Microsoft ODBC D
  • 通过网络发送的数据的字符串压缩/解压缩[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我正在寻找 C 中的字符串压缩方法 可以在将数据字符串写入网络套接字之前对其运行 我对任何类型的压缩都相当陌生 因此我在这里寻求一些建议