当前位置: 首页 > 软件库 > 程序开发 > 网络工具包 >

Darks Codec

消息协议框架
授权协议 Apache
开发语言 Java
所属分类 程序开发、 网络工具包
软件类型 开源软件
地区 国产
投 递 者 陶星波
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

Darks Codec是一个轻量级的通信消息协议编解码框架。它支持将JAVA对象与绝大部分基于字节的消息协议之间进行互相转换,以此协助开发人员便捷有效的快速构建消息协议,并为TCP粘包断包等问题提供了有效的解决方案。它能让开发人员从消息协议的实现中解脱出来,让其更多的关注于消息通信协议的设计及优化,以便让软件消息通信的整体设计更加完善。

一、配置方便快捷

只需要几行参数设置便能实现基础的消息协议。例如一个基于LITTLE-ENDIAN的协议:

FB FA  [ID 32bits] [VERSION 8bits] [COMMAND]  FF

只需简单构建JAVA对象

public class SimpleMsg
  {
      int id;
      byte version;
      String command;
  }

并在编码时配置

ObjectCoder coder = new ObjectCoder();
coder.getCodecConfig().setEndianType(EndianType.LITTLE);
coder.getCodecConfig().addWrap(new IdentifyWrapper(new OCInt16(0xFAFB), new OCInt8(0xFF)));
SimpleMsg msg = new SimpleMsg();
  msg.id = 32;
  msg.version = 1;  
  msg.command = "running";
  byte[] bytes = coder.encode(msg);

此编码会输出

FB FA   20 00 00 00   01   72 75 6E 6E 69 6E 67   FF

以上简单例子列举了增加前置及后置标识位的代码。详细文档请参见官网。

二、支持多种编码策略

Darks Codec可以对消息数据进行一种或同时多种封装处理。

  • 支持对消息数据进行前置或后置标识的封装处理。

  • 支持对消息数据进行校验码添加。例如CRC16、ADLER32、CRC32、自定义校验等。

  • 支持针对较大的消息数据进行压缩处理。例如GZIP、JZLIB、BZIP、自定义压缩等。

  • 支持针对机密消息数据进行加密处理。例如AES、RSA、BASE64、自定义加密等。

  • 支持对消息数据总长度添加封装。

  • 在后续的开发中,会支持新的序列化方式以替代JAVA序列化数据过于冗余庞大的问题。

  •  CODEC是编码器/解码器的缩写。该设备可以编码(用于发送)和解码(在接收之后)数字视频和模拟音频信号,以减少这些信号在传输时占用的带宽。 CODEC是由二个英文字的部分所组成的,它是COder与DECoder组合而成的缩写字,由这二个字直接翻译意思是编码器及译码器,而运用在声卡上就是指可将模拟讯号转成数字讯号,及将数字讯号还原成模拟讯号的组件,早期CODEC是内建在音效芯片之中,而近来因AC

  • 计算机音效的发展其来已久,在PC刚出现时,音效只能依靠内部的PC喇叭发出单调的声音,如果想要听到美妙的音乐与声音效果,就必须采购单价非常高的独立声卡。然而随着处理器的速度加快、内存增加以及音效芯片的传输界面由ISA转移到PCI,到现阶段整合型的主机板音效,不论是企业用计算机或是家用计算机,多媒体已经成为基本功能。为了能顺利处理多媒体数字数据,音效芯片也在个人计算机系统里扮演重要的角色,而延伸到在消

  •         darks-logs是一款Android、JAVA、WEB通用的日志组件,它的配置方式类似于log4j,但是它具有更加轻量级、易用性更高、高扩展性、支持移动端等特点。根据官网所述,它的最初设计目标是为JAVA、WEB应用与移动端的互相移植提供统一有效的日志组件库。 项目开源地址 项目发布地址 一、配置文件        在使用darks-logs之前,我们需要为它创建一个名叫log

  • cmem_1_02 - Contiguous memory allocator for Linux codec_engine_1_10_01 - The Codec Engine provides a framework forcreating andinteracting with A/V codecs running on the DSP via a reflection of theXDMi

 相关资料
  • 消息协议 节点之间通过消息来进行交互,所有消息都由下面的数据结构来实现。 message Message { enum Type { UNDEFINED = 0; DISC_HELLO = 1; DISC_DISCONNECT = 2; DISC_GET_PEERS = 3; DISC_PEERS = 4;

  • 我编写了一个服务器(Go)-客户端(Java)程序,并使用protobuf进行通信。定义一个proto文件并在服务器和客户端之间共享。在服务器端: 将共享的proto文件编译为go by Protoc 按proto.marshal序列化对象 将其发送给对其服务提出请求的客户端 在客户端: 通过protoc将共享的proto文件编译成Java 通过HTTP传输获取字节 将字节反序列化为对象。 这里有

  • 在网页应用中,你经常需要在处理完表单或其它类型的用户输入后,显示一个通知消息(也叫做“flash message”)给用户。 对于这个功能,Django 提供基于Cookie 和会话的消息,无论是匿名用户还是认证的用户。其消息框架允许你临时将消息存储在请求中,并在接下来的请求(通常就是下一个请求)中提取它们并显示。每个消息都带有一个特定level 标签,表示其优先级(例如info、warning

  • 我发现了一个有趣的协议缓冲区问题。如果您有两条类似的消息,那么可以使用C API或命令行解析其中一条消息,就像解析另一条消息一样。 ParseFromString的有限文档没有提到它不需要使用所有字符串,如果不使用,它也不会失败。 我原以为ParseFromString无法解析类型为a的消息,如果它显示的是类型为B的消息。毕竟消息包含了额外的数据。然而,事实并非如此。示例脚本演示了该问题: 输出为

  • 请帮忙。我有一个 SP,以及一个用于远程 IDP 的公钥。我上传了 spring sam 的示例,并对其进行了更改,公钥被添加到带有别名的 jks 文件中(使用键工具,命令列表显示 cer 已导入),并且它指向带有签名键的 idp 扩展元数据。但最终验证失败了。 org.opensaml.ws.security.安全策略异常:协议消息签名验证失败

  • 而不是使用关系。关系GetRequest作为请求和响应。有什么方法可以将请求/响应转换为POJO? 我见过这个解决方案,但它比我想要的要复杂一些:将协议缓冲区转换为POJO 我正在使用翻新和谷歌协议缓冲区。 我所拥有的: 我想用的是: 关系: 我的请求最终是这样的,请求必须在这里构建...

  • 这给了我错误日志 HDFS文件系统似乎出现了问题,因为尝试命令失败,出现了类似的异常。 其中是Master-R5-Node的IP地址

  • 本文向大家介绍Java HTTP协议收发MQ 消息代码实例详解,包括了Java HTTP协议收发MQ 消息代码实例详解的使用技巧和注意事项,需要的朋友参考一下 1. 准备环境 在工程 POM 文件添加 HTTP Java 客户端的依赖。 2. 运行代码配置(user.properties) 您需要设置配置文件(user.properties)的相关内容,具体请参考申请 MQ 资源 。 说明:URL