程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> J2ME >> 深入了解J2ME網絡程序設計

深入了解J2ME網絡程序設計

編輯:J2ME

本文和大家重點討論一下J2ME網絡程序設計,Javax.microedition.io包內的這個結構包括Connection類和好幾個很有用的接口(包括Stream Connection、ContentConnection和HTTPConnection)。本文討論這個包的設計並使用Stream Connection和ContentConnection接口增強前面介紹的address bookMIDLet例子的功能。

J2ME網絡程序設計

前面我介紹了通過記錄管理系統(RMS)開發本地設備數據存儲,J2ME另外一個很重要的特性就是使用J2ME連接結構打開網絡連接並傳送數據的能力。Javax.microedition.io包內的這個結構包括Connection類和好幾個很有用的接口(包括Stream Connection、ContentConnection和HTTPConnection)。本文討論這個包的設計並使用Stream Connection和ContentConnection接口增強前面介紹的address bookMIDLet例子的功能。

一、Javax.microedition.io程序包

如果你有使用J2SEJava.Net包開發程序的經驗,你就會知道它使用的非常廣泛並且提供一些非常高級的網絡性能。遺憾的是,由於設備內存的大小,這些高級特性就不適合有限連接設備配置CLDC。作為彌補,我們有一個簡化的但是功能完全的連接結構,允許傳送數據的簡單的連接。MID簡表有進了一步,它還定義了一個HTTPConnection接口,用於網絡上的HTTP訪問。

二、修改Address Book MIDLet

本節中的例程與上一節中記錄管理系統address book例程幾乎一樣,上一節的例子使用的是本地的數據文件,而現在我要介紹的例子使用J2ME網絡功能從一個儲存在互聯網上的文本文件中取回地址。這個文本文件名為address book.txt,文件中的姓名與地址使用逗號分隔。我前面曾提到,下列例子使用兩個不同的J2ME接口來執行傳送數據:Stream Connection和Content Connection。

三、使用Stream Connection存取數據

Stream Connection接口定義了一個流連接必須有的最小的功能。現在我們對address bookMIDLet應用程序做出修改:

刪除address bookMIDLet()構造程序中的dbAddress.addAddress()方法調用,這個方法調用可以刪除,因為新的程序沒有必要自己動手向數據庫中添加數據,新的程序將使用J2ME的網絡功能取回儲存在網上的地址。

把特定的連接代碼添加到AddressDB構造程序中。這兩個例子中的特定連接代碼只是簡單地通過TCP/IP取回地址並手動地把每個地址添加到通訊簿中。

  1.  StreamConnection connStream=null;InputStreaminStream=null;  
  2. byte[]b=newbyte[255];  
  3. Stringaddress,name;  
  4. intcommalocation=0;  
  5. try{  
  6. connStream=(StreamConnection)  
  7. Connector.open("http://localhost/address book.txt");  
  8. inStream=connStream.openInputStream();  
  9. intcount=inStream.read(b);  
  10. address=newString(b);  
  11. addressaddress=address.trim();  
  12. StringTokenizerst=newStringTokenizer(address,"");  
  13. while(st.hasMoreTokens()){  
  14. address=st.nextToken();  
  15. commalocation=address.indexOf(',');  
  16. name=address.substring(0,commalocation);  
  17. addressaddress=address.substring(commalocation+1);  
  18. addAddress(name,address);  
  19. }  
  20. }  
  21. catch(IOExceptione){  
  22. System.out.println(e);  
  23. e.printStackTrace();  
  24. }  
  25.  

上面的代碼能夠工作,但是有點小問題。必須限定字節數組長度為255,因為StreamConnection接口不能估計下載數據的大小。為此,我可以利用ContentConnection接口以及很好使用的getLength()方法。

另外一個問題就是J2ME中缺少J2SE的Java.util.StringTokenizer類。雖然可以自己寫字符串分析器類,但是也可以從網上找到StringTokenizer類。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved