在Android开发中,经常会需要由服务端主动推送一些消息给客户端,最常见的做法就是用Tcp Socket保持长链接。为了简化这个过程,做了一个简单的依赖库来实现TCP Socket的client功能。
Step 1.先配置你的project的build.gradle
allprojects {
repositories {
···
maven { url 'https://jitpack.io' }
···
}
}
Step 2.为你的项目添加依赖
dependencies {
···
implementation 'com.github.lp0int:TcpSocketLib:1.0'
···
}
TcpClient tcpClient = new TcpClient(serverIp, serverPort);
tcpClient.startConn();
以上代码就是创建一个TCP连接最简单的代码了,创建一个TcpClient的实例,然后startConn(),就完成啦最简单的Tcp连接啦。Of course,这是不够的。所以提供了一些方法来实现更丰满的功能。
这里提供了一个简单的listener类,来负责监听Tcp的各个状态
TcpSocketListener tcpSocketListener = new TcpSocketListener() {
/**
* 发起TCP连接时报出的异常
*/
@Override
public void onConnException(Exception e) {}
/**
* 当TCP通道收到消息时执行此回调
*/
@Override
public void onMessage(String s) {}
/**
* 当TCP消息监听时遇到异常,从这里抛出
*/
@Override
public void onListenerException(Exception e) {}
/**
* 当sendMsg()方法成功执行完毕后,执行此方法
*/
@Override
public void onSendMsgSuccess(String s) {}
/**
* 发送消息时遇到异常,从这里抛出
*/
@Override
public void onSendMsgException(Exception e) {}
/**
* 当TCP连接断开时遇到异常,从这里抛出
*/
@Override
public void onCloseException(Exception e) {}
};
tcpClient.setTcpSocketListener(tcpSocketListener)
就是这样,通过setTcpSocketListener()方法,添加一个监听,就可以很方便的完成socket通讯了。要注意的是,这些方法是异步执行的,可能会引发线程问题需要自己去处理
tcpClient.sendMsg(final String msg)
tcpClient.closeTcpSocket()
这里提供了链接断开(不管异常还是主动)后,自动重连的方法
tcpClient.setNeedReConn(boolean needReConn)
tcpClient.setReConnTime(int reConnTime)
tcpClient.setCharsetName(String charsetName)
tcpClient.setSoTimeOut(int soTimeOut)
tcpClient.setServerIP(String serverIP)
tcpClient.setServerPort(int serverPort)
gayhub地址:https://github.com/lp0int/TcpSocketLib
自用lib,欢迎提交Issues和star