|
| 1 | +#TcpSocketLib |
| 2 | + |
| 3 | +在Android开发中,经常会需要由服务端主动推送一些消息给客户端,最常见的做法就是用Tcp Socket保持长链接。为了简化这个过程,做了一个简单的依赖库来实现TCP Socket的client功能。 |
| 4 | + |
| 5 | +# Doc |
| 6 | +## 引入依赖 |
| 7 | +Step 1.先配置你的project的build.gradle |
| 8 | + |
| 9 | +``` |
| 10 | +allprojects { |
| 11 | + repositories { |
| 12 | + ··· |
| 13 | + maven { url 'https://jitpack.io' } |
| 14 | + ··· |
| 15 | + } |
| 16 | +} |
| 17 | +``` |
| 18 | +Step 2.为你的项目添加依赖 |
| 19 | +``` |
| 20 | +dependencies { |
| 21 | + ··· |
| 22 | + implementation 'com.github.lp0int:TcpSocketLib:1.0' |
| 23 | + ··· |
| 24 | +} |
| 25 | +``` |
| 26 | +## 开始使用 |
| 27 | +``` |
| 28 | + TcpClient tcpClient = new TcpClient(serverIp, serverPort); |
| 29 | + tcpClient.startConn(); |
| 30 | +``` |
| 31 | +以上代码就是创建一个TCP连接最简单的代码了,创建一个TcpClient的实例,然后startConn(),就完成啦最简单的Tcp连接啦。Of course,这是不够的。所以提供了一些方法来实现更丰满的功能。 |
| 32 | + |
| 33 | +## API |
| 34 | +### 监听Socket的各个状态以及消息的接受 |
| 35 | +这里提供了一个简单的listener类,来负责监听Tcp的各个状态 |
| 36 | +``` |
| 37 | + TcpSocketListener tcpSocketListener = new TcpSocketListener() { |
| 38 | + /** |
| 39 | + * 发起TCP连接时报出的异常 |
| 40 | + */ |
| 41 | + @Override |
| 42 | + public void onConnException(Exception e) {} |
| 43 | +
|
| 44 | + /** |
| 45 | + * 当TCP通道收到消息时执行此回调 |
| 46 | + */ |
| 47 | + @Override |
| 48 | + public void onMessage(String s) {} |
| 49 | +
|
| 50 | + /** |
| 51 | + * 当TCP消息监听时遇到异常,从这里抛出 |
| 52 | + */ |
| 53 | + @Override |
| 54 | + public void onListenerException(Exception e) {} |
| 55 | +
|
| 56 | + /** |
| 57 | + * 当sendMsg()方法成功执行完毕后,执行此方法 |
| 58 | + */ |
| 59 | + @Override |
| 60 | + public void onSendMsgSuccess(String s) {} |
| 61 | +
|
| 62 | + /** |
| 63 | + * 发送消息时遇到异常,从这里抛出 |
| 64 | + */ |
| 65 | + @Override |
| 66 | + public void onSendMsgException(Exception e) {} |
| 67 | +
|
| 68 | + /** |
| 69 | + * 当TCP连接断开时遇到异常,从这里抛出 |
| 70 | + */ |
| 71 | + @Override |
| 72 | + public void onCloseException(Exception e) {} |
| 73 | + }; |
| 74 | + tcpClient.setTcpSocketListener(tcpSocketListener) |
| 75 | +``` |
| 76 | +就是这样,通过setTcpSocketListener()方法,添加一个监听,就可以很方便的完成socket通讯了。**要注意的是,这些方法是异步执行的,可能会引发线程问题需要自己去处理** |
| 77 | + |
| 78 | +### 发送消息 |
| 79 | +``` |
| 80 | +tcpClient.sendMsg(final String msg) |
| 81 | +``` |
| 82 | + |
| 83 | +### 关闭连接 |
| 84 | +``` |
| 85 | +tcpClient.closeTcpSocket() |
| 86 | +``` |
| 87 | + |
| 88 | +这里提供了链接断开(不管异常还是主动)后,自动重连的方法 |
| 89 | +### 设置是否需要断开后重新连接 |
| 90 | +``` |
| 91 | + tcpClient.setNeedReConn(boolean needReConn) |
| 92 | +``` |
| 93 | + |
| 94 | +### 设置socket断开后重新连接间隔时间 单位 秒 |
| 95 | +``` |
| 96 | + tcpClient.setReConnTime(int reConnTime) |
| 97 | +``` |
| 98 | + |
| 99 | +### 设置socket接收字符的格式,默认"utf-8",非特殊需要不用修改 |
| 100 | +``` |
| 101 | + tcpClient.setCharsetName(String charsetName) |
| 102 | +``` |
| 103 | + |
| 104 | +### 设置soTimeOut,默认为0,不建议修改 |
| 105 | +``` |
| 106 | + tcpClient.setSoTimeOut(int soTimeOut) |
| 107 | +``` |
| 108 | + |
| 109 | +### 设置连接的socket服务器IP |
| 110 | +``` |
| 111 | + tcpClient.setServerIP(String serverIP) |
| 112 | +``` |
| 113 | + |
| 114 | +### 设置连接的socket服务端口 |
| 115 | +``` |
| 116 | + tcpClient.setServerPort(int serverPort) |
| 117 | +``` |
| 118 | + |
| 119 | + |
| 120 | +>gayhub地址:https://github.com/lp0int/TcpSocketLib </br>自用lib,欢迎提交Issues和star |
0 commit comments