Android Socket 封装,支持 TCP/UDP 客户端和服务端,支持自定义粘包处理、验证处理、解析处理。

XAndroidSocket

项目地址: XAndroidSocket
简介:Android Socket 封装,支持 TCP/UDP 客户端和服务端,支持自定义粘包处理、验证处理、解析处理。

Socket 封装,支持 TCP/UDP 客户端和服务端,支持自定义粘包处理、验证处理、解析处理。

使用

详见目录TCP/UDP 使用 demo 下的例子,使用简单。 其中只有 TCP 才支持支持粘包处理、验证处理、解析处理。

Step 1. Add the JitPack repository to your build file

Add it in your root build.gradle at the end of repositories:

allprojects {
    repositories {
        ...
        maven { url "https://jitpack.io" }
    }
}

Step 2. Add the dependency

dependencies {
        compile 'com.github.Blankeer:XAndroidSocket:1.0.0'
}

粘包处理

提供的粘包处理有

支持自定义粘包处理,只需要实现AbsStickPackageHelper接口,

/**
 * 接受消息,粘包处理的 helper,通过 inputstream,返回最终的数据,需手动处理粘包,返回的 byte[]是我们预期的完整数据
 * note:这个方法会反复调用,直到解析到一条完整的数据。该方法是同步的,尽量不要做耗时操作,否则会阻塞读取数据
 */
public interface AbsStickPackageHelper {
    byte[] execute(InputStream is);
}

把接收消息的 InputStream 给你,你返回一个完整包的 byte[]给我。

验证处理

提供的验证处理是 不处理,也是默认的。 自定义验证处理需要实现AbsValidationHelper:

public interface AbsValidationHelper {
    boolean execute(byte[] msg);
}

把完整的数据包给你,你需要返回是否验证通过,一般的自定义协议里都会有 MD5 验证,可以在这里验证。

解析处理

提供的解析处理是 不处理,也是默认的。 自定义解析处理需要实现AbsDecodeHelper

/**
 * 解析消息的处理
 */
public interface AbsDecodeHelper {
    /**
     *
     * @param data  完整的数据包
     * @param targetInfo    对方的信息(ip/port)
     * @param tcpConnConfig    tcp 连接配置,可自定义
     * @return
     */
    byte[][] execute(byte[] data, TargetInfo targetInfo, TcpConnConfig tcpConnConfig);
}

设计思路:一般自定义协议会设计好多个字段组成,比如:dataLen+data+type+md5,数据长度+数据+类型+MD5,解析处理就是把这 4 个字段解析出来,返回 byte[4][],便于后续处理。

Log

日志开关:XSocketLog.debug(true)

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值