基于Windows Mobile的無(wú)線(xiàn)通信系統的研究與實(shí)現
其次,由于沿用了微軟Windows操作系統的界面,界面和操作都和電腦上的Windows十分接近,對于使用者來(lái)說(shuō)十分熟悉又上手。
第三,針對中國用戶(hù)而言,中文操作系統已經(jīng)比較成熟。目前,多普達、摩托羅拉、三星等都已經(jīng)生產(chǎn)了針對該系統的智能手機,并且從市場(chǎng)的發(fā)展趨勢來(lái)看,基于Windows Mobile操作系統的智能手機將是主流。
因此,在本次系統的設計中,智能手機終端采用了Windows Mobile操作系統。
3.2 Java在Windows Mobile中的應用
Java語(yǔ)言分為三個(gè)版本:J2SE,J2EE,J2ME。其中J2ME版本是適用于智能無(wú)線(xiàn)設備和小型計算設備的J2SE的簡(jiǎn)化版,它能夠適應這些設備微型、移動(dòng)和無(wú)線(xiàn)的特點(diǎn)。
對于安裝了Windows Mobile操作系統的智能手機來(lái)說(shuō),根據不同品牌、不同型號的智能手機來(lái)看,在運行Java程序上也有所不同。對于不直接支持Java的智能手機來(lái)說(shuō),就需要借助第三方的Java虛擬機來(lái)運行程序,常見(jiàn)的Java虛擬機有JMM和DMIDP2等。而對于支持Java擴展的智能手機來(lái)說(shuō),只要將編寫(xiě)好的J2ME程序打包后,就能在手機上運行。本設計選擇的智能手機是多普達S1,它本身是支持Java的,因此不需要另外尋找Java虛擬機來(lái)運行J2ME程序,只需要下載一個(gè)RESCO資源管理器,然后將要運行的程序對應的工程(包括jad文件)進(jìn)行打包,下載至智能手機中。最后打開(kāi)RESCO資源管理器,找到所要運行的Java程序,點(diǎn)擊其中的jar文件就可以運行了。
4 系統的具體實(shí)現
4.1 服務(wù)器端程序的實(shí)現
由于服務(wù)器端需要接受和處理的數據量較大,并且是運行在計算機上的,所以,服務(wù)器端的程序是用J2EE編寫(xiě)的。
智能手機是通過(guò)設置專(zhuān)線(xiàn)APN來(lái)連接服務(wù)器的,服務(wù)器通過(guò)繼承Thread類(lèi)創(chuàng )建線(xiàn)程ServerImpl實(shí)現其功能,并通過(guò)生成固定端口的服務(wù)器Socket來(lái)接收終端的請求,實(shí)時(shí)偵聽(tīng),對來(lái)自于終端的數據進(jìn)行相應處理,完成任務(wù)后,用close()關(guān)閉套接字,最后關(guān)閉服務(wù)器退出。
服務(wù)器的初始化程序為:
private void initServer(){
try{
receiveMessages=new Vector();
//創(chuàng )建存放接收消息數組對象
sendMessages=new Vector();
//創(chuàng )建存放發(fā)送消息數組對象
sender=new SendImpl(); //生成SendImpl類(lèi)的對象
receiver=new ReceiveImpl();
//生成ReceiveImpl類(lèi)的對象
listener=new ListenImpl();
clients=new Vector();
serverSocket=new ServerSocket(8000);
//生成服務(wù)器端口
listener.setListenSocket(clients);
//實(shí)現對客戶(hù)端的偵聽(tīng)
listener.setServerSocket(serverSocket);
//設置服務(wù)器套接字
sender.setSockets(clients);
receiver.setSockets(clients);
sender.setMessages(sendMessages);
receiver.setMessages(receiveMessages);
//設置消息對象
}catch(BindException b){
System.out.println(Server 已經(jīng)啟動(dòng));
System.exit(0);//結束程序
}
}
4.2 客戶(hù)端的程序實(shí)現
在創(chuàng )建J2ME程序之前,首先要對J2ME進(jìn)行配置。針對智能手機的特點(diǎn),應當選擇的是CLDC(連接有限設備)和MIDP1.0的配置。
4.2.1 連接程序的實(shí)現
程序的主題部分中,與服務(wù)器的連接過(guò)程是關(guān)鍵。程序代碼如下:
private boolean connect() {
try {
System.out.println(連接到服務(wù)器);
connect=(SocketConnection)Connector.open(socket://localhost:8000);
//與服務(wù)器建立連接
System.out.println(此終端的地址為:+adrthis);
in = connect.openInputStream();
//輸入數據
out = connect.openOutputStream();
//輸出數據
return true;
} catch (Exception e) {
//拋出異常 linux操作系統文章專(zhuān)題:linux操作系統詳解(linux不再難懂)
評論