導航:首頁 > 操作系統 > android保持長連接

android保持長連接

發布時間:2023-01-16 16:43:41

㈠ 如何實現android和伺服器長連接

前言:現在的大多數移動端應用都有實時得到消息的能力,簡單來說,有發送消息的主動權和接受消息的被動權。例如:微信,QQ,天氣預報等等,相信好處和用戶體驗相信大家都知道吧。

提出問題:這種功能必須涉及client(客戶端)和server(伺服器),所以到底client如何和server實現實時連接通訊?

分析問題:這種功能實際上就是數據同步,同時要考慮手機本身、電量、網路流量等等限制因素,所以通常在移動端上有一下兩個解決方案:
1.一種是定時去server查詢數據,通常是使用HTTP協議來訪問web伺服器,稱Polling(輪詢);
2.還有一種是移動端和伺服器建立長連接,使用XMPP長連接,稱Push(推送)。

從耗費的電量、流量和數據延遲性各方面來說,Push有明顯的優勢。但是使用Push的缺點是:
對於客戶端:實現和維護相對成本高,在移動無線網路下維護長連接,相對有一些技術上的開發難度。
對於伺服器:如何實現多核並發,cpu作業調度,數量龐大的長連接並發維護等技術,仍存在開發難點。轉載,僅供參考。

㈡ android 客戶端怎麼實現長連接和短連接



所謂長連接,指在一個連接上可以連續發送多個數據包,然後斷開連接,在連接保持期間,如果沒有數據包發送,需要雙方發鏈路檢測包。短連接是指通訊雙方有數據交互時,就建立一個連接,數據發送完成後,則斷開此連接,即每次連接只完成一項業務的發送.

㈢ 如何干凈的實現Android/Java Socket 長連接通信

在遠標實現過:socket模擬網頁的報文連接某個網站,創建tcp的socket後,當我socket.connect後,如果在5到7秒鍾不socket.send,那麼這個鏈接就失效了。 請問如何長時間的保持這個鏈接
這是在伺服器端的設置的,客戶端沒法設置,可以發送心跳包。
socket.connect後,每3-4秒用socket.send發送一位元組數據(內容隨便),然後觀查這個連接是否保持。

lientSocket=serverSocket.accept();
OutputStream os = clientSocket.getOutputStream();
ObjectOutputStream oos=new ObjectOutputStream(os);
oos.writeObject(al);
oos.flush();
oos.close()//socket會關閉

實現:
長連接的維持,是要客戶端程序,定時向服務端程序,發送一個維持連接包的。
如果,長時間未發送維持連接包,服務端程序將斷開連接。

客戶端:
通過持有Client對象,可以隨時(使用sendObject方法)發送Object給服務端。
如果keepAliveDelay毫秒(程序中是2秒)內未發送任何數據,則,自動發送一個KeepAlive對象給服務端,
用於維持連接。
由於,我們向服務端,可以發送很多不同的對象,服務端也可以返回不同的對象。
所以,對於返回對象的處理,要編寫具體的ObjectAction實現類進行處理。
通過Client.addActionMap方法進行添加。這樣,程序會回調處理。

服務端:
由於客戶端會定時(keepAliveDelay毫秒)發送維持連接的信息過來,所以,服務端要有一個檢測機制。
即當服務端receiveTimeDelay毫秒(程序中是3秒)內未接收任何數據,則,自動斷開與客戶端的連接。
ActionMapping的原理與客戶端相似(相同)。
通過添加相應的ObjectAction實現類,可以實現不同對象的響應、應答過程。

閱讀全文

與android保持長連接相關的資料

熱點內容
解壓神器大組合 瀏覽:728
多次編譯一個內核會快嗎 瀏覽:162
單片機伺服500k 瀏覽:868
linux安裝repo 瀏覽:799
app上的小說怎麼下載 瀏覽:230
陝西工會app所屬工會怎麼修改 瀏覽:177
手機如何設置app定向免流 瀏覽:246
程序員電腦什麼牌子的多 瀏覽:311
捷豹水泵編程 瀏覽:251
如何在電腦上查找dns伺服器地址 瀏覽:589
華為榮耀v40加密怎麼搞 瀏覽:489
單個伺服器怎麼確保網路安全 瀏覽:949
超高效定速壓縮機 瀏覽:628
怎樣把文件夾解壓到磁碟 瀏覽:826
java十進制十六進制轉換 瀏覽:404
安卓手機怎麼關閉識別物品 瀏覽:693
單片機通用燒錄器 瀏覽:55
如何設置catia伺服器開機運行 瀏覽:421
編程術語知多少 瀏覽:347
android模板代碼下載 瀏覽:766