安卓 tcp socket长连接

在Android开发中,经常会需要由服务端主动推送一些消息给客户端,最常见的做法就是用Tcp Socket保持长链接。为了简化这个过程,做了一个简单的依赖库来实现TCP Socket的client功能。
Doc
引入依赖

Step 1.先配置你的project的build.gradle

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

    1
    2
    3
    4
    5
    6
    7

Step 2.为你的项目添加依赖

dependencies {
    ···
    implementation 'com.github.lp0int:TcpSocketLib:1.0'
    ···
}

    1
    2
    3
    4
    5

开始使用

    TcpClient tcpClient = new TcpClient(serverIp, serverPort);
    tcpClient.startConn();

    1
    2

以上代码就是创建一个TCP连接最简单的代码了,创建一个TcpClient的实例,然后startConn(),就完成啦最简单的Tcp连接啦。Of course,这是不够的。所以提供了一些方法来实现更丰满的功能。
API
监听Socket的各个状态以及消息的接受

这里提供了一个简单的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)

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38

就是这样,通过setTcpSocketListener()方法,添加一个监听,就可以很方便的完成socket通讯了。要注意的是,这些方法是异步执行的,可能会引发线程问题需要自己去处理
发送消息

tcpClient.sendMsg(final String msg)

    1

关闭连接

tcpClient.closeTcpSocket()

    1

这里提供了链接断开(不管异常还是主动)后,自动重连的方法
设置是否需要断开后重新连接

    tcpClient.setNeedReConn(boolean needReConn)

    1

设置socket断开后重新连接间隔时间 单位 秒

    tcpClient.setReConnTime(int reConnTime)

    1

设置socket接收字符的格式,默认”utf-8”,非特殊需要不用修改

    tcpClient.setCharsetName(String charsetName)

    1

设置soTimeOut,默认为0,不建议修改

    tcpClient.setSoTimeOut(int soTimeOut)

    1

设置连接的socket服务器IP

    tcpClient.setServerIP(String serverIP)

    1

设置连接的socket服务端口

    tcpClient.setServerPort(int serverPort)

    1

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值