TCP-long-connection-based-on-Apache-mina

基于Apache mina 的tcp长连接实现,可用于android客户端推送。

项目Github地址:https://github.com/sddyljsx/Android-tcp-long-connection-based-on-Apache-mina

项目将Apache的mina项目移植到了android平台。实现长连接的主要思想是使用了mina的KeepAliveFilter过滤器。

acceptor.getFilterChain().addLast("keeplive", new KeepAliveFilter(new ServerKeepAliveMessageFactoryImp(), IdleStatus.READER_IDLE, KeepAliveRequestTimeoutHandler.CLOSE,10, 5));

Android客户端:

核心代码如下图所示,规定了长连接ping与pong信息的规则,以及网络参数配置信息。

配置信息:

/** * 服务器地址 */public static final String HOSTNAME = "192.168.1.15";/** * 服务器端口号 */public static final int PORT = 8081;/** * 连接超时时间,30 seconds */public static final long SOCKET_CONNECT_TIMEOUT = 30 * 1000L;/** * 长连接心跳包发送频率,10 seconds */public static final int KEEP_ALIVE_TIME_INTERVAL = 10;/** * 长连接心跳包应答超时 */public static final int KEEP_ALIVE_RESPONSE_TIMEOUT = 5;/** * 心跳包 ping message */public static final String PING_MESSAGE="ping";/** * 心跳包 pong message */public static final String PONG_MESSAGE="pong";

程序启动后,PushService启动,并开始与服务器连接。

服务器端核心代码:

服务器与客户端的ping与pong信息要保持一致。服务器启动LongTcpServer即可。

在服务器可以看到日志信息:

可以看到,成功建立了链接,并且每隔10秒都会受到ping信息,并发送pong信息应答。

更多相关文章

  1. android 连接USB按power键锁屏2声锁屏音
  2. Android网络通信(2):HTTP通信
  3. 读取android手机流量信息
  4. Android的网络状态判断
  5. android手机客户端上传文件,java servlet服务器端接收并保存到服
  6. Android打开/关闭数据流量
  7. 重定向android log
  8. Android中获取屏幕相关信息(屏幕大小,状态栏、标题栏高度)
  9. 【android测试】值得学习的android测试知识连接

随机推荐

  1. Android(安卓)清单目录application对应属
  2. 【春节特辑】神奇的二进制
  3. 程序员群体的性取向如何?Stack Overflow
  4. 算法科普:神秘的 DES 加密算法
  5. 【春节特辑】三门问题
  6. 图解LeetCode第 103 号问题:二叉树的锯齿
  7. 【春节特辑】弹珠抽奖游戏概率
  8. 百度搜索总裁辞职!
  9. 面试官,别问我 Bit Operation 了!
  10. 【春节特辑】24 点游戏