基于Apache mina 的android 客戶端tcp長連接實現
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過濾器。
/** * 服務器地址 */ 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";
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信息應答。
來自:http://blog.csdn.net/sddyljsx/article/details/45104045
本文由用戶 fdwm 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!