Socket封装
socket client server简易封装
Add it in your project's build.gradle at the end of repositories:
repositories {
// ...
maven { url "https://jitpack.io" }
}
Step 2. Add the dependency in the form
dependencies {
compile 'com.github.vilyever:AndroidSocketClient:3.0.3'
}
提升readByLength按长度读取的速度 issue #26
修复初次连接失败时,因CountDownTimer导致崩溃的问题 issue #24
修复包头验证bug,by zzdwuliang
增加地址检测的详细log
支持ReadToData和ReadToLength自动读取以下两种结构
常见包结构1:【包头(可选)】【正文】【包尾】
常见包结构2:【包头(可选)】【余下包长度(正文加包尾长度)(此部分也可做包头)(此部分长度固定)】【正文】【包尾(可选)】
socketClient.getAddress().setRemoteIP(IPUtil.getLocalIPAddress(true)); // 远程端IP地址
socketClient.getAddress().setRemotePort("21998"); // 远程端端口号
socketClient.getAddress().setConnectionTimeout(15 * 1000); // 连接超时时长,单位毫秒
/**
* 设置自动转换String类型到byte[]类型的编码
* 如未设置(默认为null),将不能使用{@link SocketClient#sendString(String)}发送消息
* 如设置为非null(如UTF-8),在接受消息时会自动尝试在接收线程(非主线程)将接收的byte[]数据依照编码转换为String,在{@link SocketResponsePacket#getMessage()}读取
*/
socketClient.setCharsetName(CharsetUtil.UTF_8); // 设置编码为UTF-8
/**
* 设置自动发送的心跳包信息
*/
socketClient.getHeartBeatHelper().setDefaultSendData(CharsetUtil.stringToData("HeartBeat", CharsetUtil.UTF_8));
/**
* 设置远程端发送到本地的心跳包信息内容,用于判断接收到的数据包是否是心跳包
* 通过{@link SocketResponsePacket#isHeartBeat()} 查看数据包是否是心跳包
*/
socketClient.getHeartBeatHelper().setDefaultReceiveData(CharsetUtil.stringToData("HeartBeat", CharsetUtil.UTF_8));
socketClient.getHeartBeatHelper().setHeartBeatInterval(10 * 1000); // 设置自动发送心跳包的间隔时长,单位毫秒
socketClient.getHeartBeatHelper().setSendHeartBeatEnabled(true); // 设置允许自动发送心跳包,此值默认为false
…
…
…
…
…
…
/**
* 设置读取策略为手动读取
* 手动读取有两种方法
* 1. {@link SocketClient#readDataToData(byte[], boolean)} )} 读取到与指定字节相同的字节序列后回调数据包
* 2. {@link SocketClient#readDataToLength(int)} 读取指定长度的字节后回调数据包
*
* 此时SocketPacketHelper中其他读取相关设置将会无效化
*/
socketClient.getSocketPacketHelper().setReadStrategy(SocketPacketHelper.ReadStrategy.Manually);
…
…
…
No open issues yet, or sync has not completed.