# doip-sdk **Repository Path**: captain1749/doip-sdk ## Basic Information - **Project Name**: doip-sdk - **Description**: Doip-SDK包括以下两个部分: 1.协议的编解码器,在src/main/codec目录 2.协议的端点开发框架,在src/main/endpoint - **Primary Language**: Java - **License**: MulanPSL-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 10 - **Created**: 2022-08-02 - **Last Updated**: 2024-05-31 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # doip-sdk Doip-SDK包括以下两个部分: 1.协议的编解码器,在src/main/codec目录 2.协议的端点开发框架,在src/main/endpoint ## 使用方式 当前sdk支持使用udp,tcp,tls,websocket等传输协议。 参考:src/test/java目录下org.bdware.doip.endpoint对应包的client与server的写法。 | doip版本 | 传输协议 | 参考实现 | 适用场景 | | ---- | ---- | ---- | ---- | | 2.1 | udp | envelope mtu为1492(按802.3),无丢包重传策略,*需要* 自己实现重传 | 响应要求高,数据量小的场景 | | 2.1 | tcp | envelope mtu为5\*1024\*1024(5MB),基于TCP,因此无丢包重传策略 | 传输稳定 | | 2.1 | tls | envelope mtu为5\*1024\*1024(5MB),通过自定义TrustManager可实现对服务器的验证 | 加密传输场景 | | 2.1 | ws | envelope mtu为65536-websockt包头 | 可通过浏览器使用,无跨域问题 | | 2.0 | tls | 基于分割符的传输 | 兼容已有doip2.0协议,当前还没实现Do的Element的自动签名与验证 | 当前tcp可支持10MB级别的数据量(单个DO)。 针对大数据量(100MB)传输,例如大文件create场景, 需编写流式MessageCodec。 ## org.bdwdare.doip.codec 实现了以下几个编解码器: 1.MessageEnvelop<->DoMessage 1) NaiveEnvelopToDoMessage 仅支持1个DoMessage对应1个MessageEnvelop。该编解码器适用于可靠传输协议。 2) MessageEnvelopAggregator 可自定义MessageEnvelope的MTU,无丢包重传逻辑。 2.MessageEnvelop<->MessageEnvelop 1) 测试时可使用。 2) SenderInjector, 用于DoipUDPClient,将目的地址写到MessageEnvelop中 3.MessageEnvelopCodec, 用于将MessageEnvelop编码为字节流。 4.DoMessagePrinter, 可打印输入输出的DoMessage,调试时可使用。 5.DatagramMessageEnvelopeCodec, 用于UDP包的编码与解码。该类需与MessageEnvelopeAggregator配合使用,将每个MessageEnvelope拆分为较小的传输单元后发送。 6.WebSocketFrameToByteBufCodec, 用于实现doip over websocket。 ## 开发环境配置 build报错可将scripts目录下的gradle.properties.template 复制至./目录下,并重命名为gradle.properties ## 一些例子 src/test/java/ 目录下有若干基于不同传输协议实现的Repository和Client的例子,可供参考