国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

J2ME編程最佳實踐之聯網開發

2019-11-18 15:38:11
字體:
來源:轉載
供稿:網友

  由于無線設備所能支持的網絡協議非常有限,僅限于HTTP,Socket,UDP等幾種協議,不同的廠家可能還支持其他網絡協議,但是,MIDP 1.0規范規定,HTTP協議是必須實現的協議,而其他協議的實現都是可選的。

因此,為了能在不同類型的手機上移植,我們盡量采用HTTP作為網絡連接的首選協議,這樣還能重用服務器端的代碼。但是,由于HTTP是一個基于文本的效率較低的協議,因此,必須仔細考慮手機和服務器端的通信內容,盡可能地提高效率。

  對于MIDP應用程序,應當盡量做到:

  1.發送請求時,附加一個User-Agent頭,傳入MIDP和自身版本號,以便服務器能識別此請求來自MIDP應用程序,并且根據版本號發送相應的相應。

  2.連接服務器時,顯示一個下載進度條使用戶能看到下載進度,并能隨時中斷連接。

  3.由于無線網絡連接速度還很慢,因此有必要將某些數據緩存起來,可以存儲在內存中,也可以放到RMS中。

  對于服務器端而言,其輸出響應應當盡量做到:

  1. 明確設置Content-Length字段,以便MIDP應用程序能讀取HTTP頭并判定自身是否有能力處理此長度的數據,假如不能,可以直接關閉連接而不必繼續讀取HTTP正文。

  2. 服務器不應當發送Html內容,因為MIDP應用程序很難解析HTML,xml雖然能夠解析,但是耗費CPU和內存資源,因此,應當發送緊湊的二進制內容,用DataOutputStream直接寫入并設置Content-Type為application/octet-stream。

  3. 盡量不要重定向URL,這樣會導致MIDP應用程序再次連接服務器,增加了用戶的等待時間和網絡流量。

  4. 假如發生異常,例如請求的資源未找到,或者身份驗證失敗,通常,服務器會向瀏覽器發送一個顯示出錯的頁面,可能還包括一個用戶登錄的Form,但是,向MIDP發送錯誤頁面毫無意義,應當直接發送一個404或401錯誤,這樣MIDP應用程序就可以直接讀取HTTP頭的響應碼獲取錯誤信息而不必繼續讀取相應內容。

  5. 由于服務器的計算能力遠遠超過手機客戶端,因此,針對不同客戶端版本發送不同響應的任務應該在服務器端完成。例如,根據客戶端傳送的User-Agent頭確定客戶端版本。這樣,低版本的客戶端不必升級也能繼續使用。

  MIDP的聯網框架定義了多種協議的網絡連接,但是每個廠商都必須實現HTTP連接,在MIDP 2.0中還增加了必須實現的HTTPS連接。因此,要保證MIDP應用程序能在不同廠商的手機平臺上移植,最好只使用HTTP連接。雖然HTTP是一個基于文本的效率較低的協議,但是由于使用非凡廣泛,大多數服務器應用的前端都是基于HTTP的Web頁面,因此能最大限度地復用服務器端的代碼。只要控制好緩存,仍然有不錯的速度。

  SUN的MIDP庫提供了javax.microediton.io包,能非常輕易地實現HTTP連接。但是要注重,由于網絡有很大的延時,必須把聯網操作放入一個單獨的線程中,以避免主線程阻塞導致用戶界面停止響應。事實上,MIDP運行環境根本就不答應在主線程中操作網絡連接。因此,我們必須實現一個靈活的HTTP聯網模塊,能讓用戶非常直觀地看到當前上傳和下載的進度,并且能夠隨時取消連接。

  一個完整的HTTP連接為:用戶通過某個命令發起連接請求,然后系統給出一個等待屏幕提示正在連接,當連接正常結束后,前進到下一個屏幕并處理下載的數據。假如連接過程出現異常,將給用戶提示并返回到前一個屏幕。用戶在等待過程中能夠隨時取消并返回前一個屏幕。

  我們設計一個HttpThread線程類負責在后臺連接服務器,HttpListener接口實現Observer(觀察者)模式,以便HttpThread能提示觀察者下載開始、下載結束、更新進度條等。HttpListener接口如下:

public interface HttpListener {
    void onSetSize(int size);
    void onFinish(byte[] data, int size);
    void onPRogress(int percent);
    void onError(int code, String message);
}

  實現HttpListener接口的是繼續自Form的一個HttpWaitUI屏幕,它顯示一個進度條和一些提示信息,并答應用戶隨時中斷連接:



發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 武安市| 庆城县| 逊克县| 辛集市| 罗城| 静乐县| 韩城市| 建昌县| 新昌县| 六盘水市| 霍林郭勒市| 宁德市| 饶阳县| 越西县| 沧州市| 昭平县| 巢湖市| 宜兰县| 蓝田县| 长葛市| 元氏县| 连江县| 易门县| 滦南县| 泊头市| 珠海市| 太仆寺旗| 扬中市| 绥棱县| 晋城| 兴宁市| 苗栗县| 晴隆县| 天峨县| 泸水县| 仙居县| 聊城市| 阳春市| 湟中县| 鸡东县| 松江区|