基于J2ME的手機通信功能的開發(fā)_第1頁
基于J2ME的手機通信功能的開發(fā)_第2頁
基于J2ME的手機通信功能的開發(fā)_第3頁
基于J2ME的手機通信功能的開發(fā)_第4頁
基于J2ME的手機通信功能的開發(fā)_第5頁
已閱讀5頁,還剩68頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

I摘要摘要的模擬器上模擬手機發(fā)送和接收文本信息及手機與PC機、手機與手機的網(wǎng)絡(luò)通AbstractAbstractThepresenteraistheinformationage,isalsoaneraofcellphones,modernlife'sdependenceonthephonequiteserious.J2MEinrecentyearsavarietyofmobilecommunicationsequipmentwiththedevelopmentofthebirthofanewtechnology,Its"writeonce,runanywhere"natureofJavatoincreasetheefficiencyofdevelopment.Withthepopularityofmobilephones,theInternettoupdateanddevelopthegrowing,Javafunctionintherealizationofmobiledevices,Moreandmoreapplicationsbasedonmobileplatformisintherapiddevelopmentandplaysaroleinrichcontentofpeople'slives,thatSendandreceivetextmessagesisthetraditionalcommunicationfunctionsofmobilephonesandisalsoanindispensablefeatureofacommunicationtodailylife,TheuseofwirelessinterfacefunctionWMAdesignedtoachievethisfunction;Atthesametime,theupdatefortheInternetand3Gnetworks,putforwardacellphonenetwork--real-timechatsystemdevelopmentandcomplement,inthedesignandimplementationofthisfeatureusingtheSocketbasedtransportprotocolTCP,anduseofthenetworkcommunicationfunctionMIDP.ThispaperfocusesontheapplicationofJ2MEtechnology,havealsochosenbasedontheTCP/IPnetworkprotocolprogramming.PaperintroducestheEclipseintegrateddevelopmentenvironment,J2MEarchitecture,configuration,profileandotherbasicnormsofknowledge;Secondly,ananalysisoftherealizationofmobilecommunicationtechnologyandtherelevantbasictheory,thatis,thewirelessinterfacefunctionWMA,MIDPnetworkcommunicationfunction,etc.;Finally,theuseofJAVAprogramminglanguageandsimulatorSUNprovidedontheanalogphonestosendandreceivetextmessagesandmobilephonewithPC,mobilephoneacommunicationfunctions.Keywords:J2ME;MIDP;WMA;sendandreceivetextmessages;Socket;networkcommunication江蘇大學(xué)本科畢業(yè)論文 第二章開發(fā)環(huán)境與開發(fā)技術(shù) 2.2關(guān)于Eclipse及WirelessToolKit 2.3MIDP 第三章Java2MicroEdition概述 第四章手機文本信息的發(fā)送和接收 4.3PUSH注冊 4.5程序打包及運行效果 第五章手機的網(wǎng)絡(luò)通信 5.3.1應(yīng)用程序的設(shè)計 5.4手機與手機之間的網(wǎng)絡(luò)通信 5.4.1應(yīng)用程序的設(shè)計 第六章總結(jié)與展望 1江蘇大學(xué)本科畢業(yè)論文第一章緒論本次設(shè)計的目的是掌握基于TCP/IP協(xié)議的編程)與流行開發(fā)工具J2ME,并通過設(shè)計實現(xiàn)智能手機發(fā)送和接收文2江蘇大學(xué)本科畢業(yè)論文本論文通過對TCP/IP協(xié)議的網(wǎng)絡(luò)編程技術(shù)的掌握,主要研究在J2ME的Eclipse集成開發(fā)環(huán)境下,如何利用現(xiàn)有的開發(fā)技術(shù)進行windo機與手機之間的網(wǎng)絡(luò)通行功能。本論文研究與實現(xiàn)的手機通信功能結(jié)合了J2ME開發(fā)技術(shù)和TCP/IP協(xié)議網(wǎng)絡(luò)3江蘇大學(xué)本科畢業(yè)論文第二章開發(fā)環(huán)境與開發(fā)技術(shù)Sun-java-WirelessToolKi4江蘇大學(xué)本科畢業(yè)論文J2ME應(yīng)用程序非常方便。在實際開發(fā)時,也有可能針對某個具體設(shè)備開發(fā)應(yīng)用程序。各個設(shè)備制造廠商都為自己的設(shè)備提供了開發(fā)環(huán)境和模擬器,如Moto,附加提供了一些專有API,提供了模擬真實設(shè)備的模擬器。例如Nokia提供的5江蘇大學(xué)本科畢業(yè)論文級的塊(MID)描述了設(shè)備的硬件。在硬件之上統(tǒng)和設(shè)備所使用的類庫。再上一級,從左到右是上一層的軟件CLDC。這一塊描述了虛擬機和由CLDC規(guī)范所定義的相關(guān)類庫,它提供了更高級別的JavaAPIMIDPMIDMIDP6江蘇大學(xué)本科畢業(yè)論文有自己的狀態(tài),并且他的狀態(tài)變化由設(shè)備上的程序管理軟件AMS(Application備上刪除等等,并在此過程中負責(zé)錯誤處理和與用戶交互,為程序提供了Java暫()圖2.4MIDlet狀態(tài)和狀態(tài)轉(zhuǎn)換圖MIDlet類實現(xiàn)了與AMS交互的大部分功能,只把狀態(tài)轉(zhuǎn)換時需要調(diào)用的startApp(、)pauseApp(、)destroyApp()個3方法留給開發(fā)者實現(xiàn)。JAR內(nèi)容的清單文件(manifest.mf)。這個程序包就是MIDlet應(yīng)用程序套件MIDlets(MIDletSui)清單文件包括一系列的MIDlet屬性,表示為冒號隔開的名字值對。有一些7江蘇大學(xué)本科畢業(yè)論文每個MIDlets都可以存在一個可選的應(yīng)用程序描述文件JAD(ApplicationMIDPProfile所包括的網(wǎng)絡(luò)支持源于CLDC規(guī)范中的通用連接框架GCF(GenericConnectionFramework)。因為移動設(shè)備種類繁多,通用連接框架中只nnn8江蘇大學(xué)本科畢業(yè)論文Connection接口是最基本的通用連接類型,它是所有連接接口的根源,即javax.microedition.io包中的所有接口都是基于Connection接口的。其他的連接接口繼承Connection中的方法,并且定義了用來訪問相關(guān)變量和該Connectio類n型動作的方法。(2)InputConnectinOutputConnectionInputConnectio和nOutputConnectin口分別定義了輸入流和輸出流連接所需要的能力。接口用作原始的輸入/輸出流,如從Socket連接或文件中讀取/寫入數(shù)據(jù)流,這兩個接口分別在基本onnectio接n口上增加了兩個方法個用來打開用于連接的數(shù)據(jù)輸入/輸出流,另一個是用來打開用于連接的輸入/(3)StreamConnectionStreamConnection接口定義了流連接所需的能力,可以提供輸入流和輸出(4)SocketConnection和ServerSocketConnection9江蘇大學(xué)本科畢業(yè)論文第三章Java2MicroEdition概述J2ME體系結(jié)構(gòu)、配置、簡表以及優(yōu)勢等具體內(nèi)容。本章概念性和了解性的內(nèi)容的上面是一個或者多個J2MEProfile,這些附加的編輯庫利用相似設(shè)備的類似可選包(OptionalPackage)簡表(Profile)配置(Configuration)JAVA虛擬機主機操作系統(tǒng)江蘇大學(xué)本科畢業(yè)論文配置在3層體系結(jié)構(gòu)中起到了承上啟下的作用,它定義了針對在總存儲空第三,J2ME簡表。簡表為相同消費電子設(shè)備的不同生產(chǎn)廠商提供標(biāo)準(zhǔn)化的殊設(shè)備的供應(yīng)商領(lǐng)導(dǎo)。目前J2ME領(lǐng)域里使用最廣泛的是移動信息設(shè)備簡表(MIDP),它主要是針對手機和其它雙向移動通信設(shè)備而設(shè)計的。此外,CDC規(guī)Java技術(shù)以其跨平臺性,即“一次編寫,到處運行”的特點,已經(jīng)成為智江蘇大學(xué)本科畢業(yè)論文Java編程語言在抽象機制和較高層次的程序構(gòu)造方面遠比當(dāng)前所用的其他Java提供了多級安全性,從類裝載器、字節(jié)碼驗證器到安全管理器,都可江蘇大學(xué)本科畢業(yè)論文第四章手機文本信息的發(fā)送和接收無線消息接口函數(shù)WMA(WirelessmessageAPI)的短信息收/發(fā)軟件,學(xué)習(xí)WMA無線消息接口函數(shù)WMA規(guī)范設(shè)計的目標(biāo)是那些能夠發(fā)送和接收文本信息的傳輸機制可以是GSMSMS(ShortMessageSerBroadcastService,小區(qū)廣播服務(wù))、CMDASMS或者MMS(Mult江蘇大學(xué)本科畢業(yè)論文PublicMessagenewMessage(Stringtype)——創(chuàng)建一個無線消息實例對PublicvoidsetMessageListener(MessageListenermListener)——為當(dāng)前連接設(shè)置消息監(jiān)聽器。如果當(dāng)前有消息到來,監(jiān)聽器mListener將調(diào)回MessageListene接r口中的notifyIncomingMessa方ge法。(2)MessageListene接r口MessageListene接r口定義了下面的方法。PublicvoidnotifyIncomingMessage(MessageConnecto到來時,notifyIncomingMessa方ge法將被調(diào)用,參數(shù)conn表示消息連接。(3)Message接口消息API中分別定義了這三種消息類型的接口。Message接口是所有消息類型的父接口,定義了無線消息的基本方法。PublicStringgetAddress()——返回消息的地址。如果當(dāng)前消息是被發(fā)送PublicvoidsetAddress(Stringaddress)——設(shè)置與當(dāng)前消息相關(guān)的地址。消息的地址必須符合URL格式。(4)TextMessage接口TextMessage接口描述了文本內(nèi)容的消息類型,提供了操作文本消息內(nèi)容的PublicvoidsetPayloadText(Strinata)——設(shè)置當(dāng)前文本消息的內(nèi)容。江蘇大學(xué)本科畢業(yè)論文java.microedition.io.ConneMessageConnectionmConnc=使用這個無線消息連接的實例對象可以向5550001手機上50000端口上的應(yīng)用程MessageConnectionmConns=Stringaddress=”sms://5550001:50000”;MessageConnectionmConn=(MessageConnection)Connector.OpenmConn.send(tMsg);江蘇大學(xué)本科畢業(yè)論文}}江蘇大學(xué)本科畢業(yè)論文的協(xié)議和窗口,與Connection.open()方法的參數(shù)相同,如sms://:50000;<MIDletClassName>表示處理連接的MIDlet;<AllowedSender>表示允許的發(fā)送者,該字段起到一個過濾器的作用,指示Java應(yīng)用管理器只能處理特定發(fā)送者(2)接收文本信息。當(dāng)應(yīng)用程序運行時,能夠異步接收到來的文本信息;江蘇大學(xué)本科畢業(yè)論文r圖4.2文本信息軟件類圖該類是應(yīng)用程序主類,控制應(yīng)用程序的生命周期。該類實現(xiàn)了江蘇大學(xué)本科畢業(yè)論文安全因素的考慮,在聯(lián)網(wǎng)發(fā)送文本信息前,將出現(xiàn)如圖(b)所提示的江蘇大學(xué)本科畢業(yè)論文圖4.5發(fā)送、接收文本信息江蘇大學(xué)本科畢業(yè)論文第五章手機的網(wǎng)絡(luò)通信江蘇大學(xué)本科畢業(yè)論文(1)在服務(wù)器端建立監(jiān)聽端口,等待客戶端進行ServerSocketConnectionscn=SocketConnectionsc=(SocketConnection)scn.acceptAndOpen();DataInputStreamis=sc.openDataInputStream();DataOutputStreamos=sc.openDataOutputStream();InputStreamis=sc.openInputStream(OutputStreamos=sc.openOutputStream();江蘇大學(xué)本科畢業(yè)論文客戶端客戶端連接輸出數(shù)據(jù)流輸入數(shù)據(jù)流輸入數(shù)據(jù)流輸出數(shù)據(jù)流服務(wù)器連接塞,直到監(jiān)聽到客戶端發(fā)送的請求為止。當(dāng)監(jiān)聽到客戶端發(fā)送的請求之后,ServerSocket對象的accept()方法會返回一個Socket對象以與發(fā)送請求的客戶端進行基于Socket協(xié)議的網(wǎng)絡(luò)通信。通過這個Socket對象,可以從中得到InputStream對象和OutputStream對象,并由這兩個對象得到相應(yīng)的DataInputStream對象和DataOutputStream對象。在DataInputStream對象和DataOutputStream對象中,分別使用相應(yīng)的reader()方法和writer()方法可以得到客戶端送來的信息和向客戶端發(fā)送的信放了一定數(shù)量的信息才發(fā)送出去。源代碼見附錄B。江蘇大學(xué)本科畢業(yè)論文在URL中先通過“socket”指明其所使用的是Socket協(xié)議,接下來的“”指明了服務(wù)器端的IP地址,由于服務(wù)器端和模擬器運行在同一臺江蘇大學(xué)本科畢業(yè)論文江蘇大學(xué)本科畢業(yè)論文此外還創(chuàng)建了一個StringItem對象用于顯示接收到的字符串,并且使用ServerSocketConnect接io建立服務(wù)器套接字,等待客戶機程序的連接。Socket協(xié)議的服務(wù)器端的功能是通過ServerSocketConnection對象實現(xiàn)的,通過Connector類的open()方法和強制轉(zhuǎn)換類型轉(zhuǎn)化,可以得到一個ServerSocketConnectio對n象的acceptAndOpen()方法等待與服務(wù)器端連接的客戶端。當(dāng)客戶端連接到服務(wù)器端之后,acceptAndOpen方()法會返回一個StreamConnectio對n象,通過強制類型轉(zhuǎn)化,可以得到一個與請求的客戶端通象的openDataInputStream()方法DataInputStream對象和DataOutputStream對象。在DataInputStream對象和Sender類是用來完成輸出數(shù)據(jù)流的發(fā)送功能的,當(dāng)服務(wù)器端或客戶端運行SocketConnection接口,用于連接服務(wù)器端。通過SocketConnection對象的DataInputStream對象和DataOutputStream對象。在DataInputStream對象和接收服務(wù)器端送來的信息和對服務(wù)端發(fā)送的信息。整性。源代碼見附錄C。[5]5.4.2功能的實現(xiàn)江蘇大學(xué)本科畢業(yè)論文江蘇大學(xué)本科畢業(yè)論文圖5.5手機與手機通信的運行結(jié)果江蘇大學(xué)本科畢業(yè)論文第六章總結(jié)與展望再根據(jù)需要去查找資料,進而深入研究它的實現(xiàn)方法。江蘇大學(xué)本科畢業(yè)論文江蘇大學(xué)本科畢業(yè)論文江蘇大學(xué)本科畢業(yè)論文[1](simpleteam-無[2]/soft/32289.htm華軍軟件園[3]左廣德。基于J2ME的移動即時通信系統(tǒng)的設(shè)計和實現(xiàn)[D]。碩士學(xué)位論文,江西師范大26、276~28883~85、299~302、327~332[7]牛曉蕾。基于TCP/IP協(xié)議的安全即時通信系統(tǒng)設(shè)計與實現(xiàn)[D]。碩士學(xué)位論文,西安電[9]JamesWhite.AnintroducationtoJavthings[J].200llEEE.P724一725.[11]Giguere,Eric.J2ME-Optional-Packages[DB\OL]./mobility/midp/articles/optional/,2002.12[15]裴木生、王慕坤。J2ME在移動通信中的應(yīng)用[J]。電子科技2008年第21卷第8期江蘇大學(xué)本科畢業(yè)論文(1)SMSMIDlet.javapackagestudy.sms;importjavax.microedition.midlet.*;importjavax.microedition.lcdui.*;importjavax.wireless.messaging.MessageListener;importjavax.wireless.messaging.MessageConnection;importjava.io.IOException;publicclassSMSMIDletextendsMIDletimplementsCommandListener,MessageListener{MessageConnectionMessageConnectionmsgConn;SenderFormsender;//短消息發(fā)Receiverreceiver;//短消息接收Inboxinbox;//收件箱Displaydisplay;ListmainMenu;CommandcmdExit=newprivate送器private器privateprivateprivateprivateCommand("退出",Command.EXIT,1);privateCommandcmdSelect=newCommand("選擇",Command.ITEM,2);privateCommandcmdRead=newCommand("查看",Command.SCREEN,3);privateCommandcmdBack=newCommand("返回",Command.BACK,2);privateprivateprivateAlerterrAlert=null;AlertmessageAlert=null;DisplayablebackDisplayable=null;publicSMSMIDlet(){inbox=newInbox(this);receiver=newReceiver(this,inbox);Stringport=this.getAppProperty("message-port");sender=newSenderForm(this,port);//創(chuàng)建主菜單mainMenu=newList("短消息",Choice.IMPLICIT,newString[]{"發(fā)送短消息","收件箱"},null);mainMenu.setSelectCommand(cmdSelect);mainMenu.addCommand(cmdExit);mainMenu.setCommandListener(this);}publicvoidstartApp(){display=Display.getDisplay(this);display.setCurrent(mainMenu);try{//打開一個消息連接,用于接收消息Stringport=this.getAppProperty("message-port");msgConn=receiver.openConnection(pomsgConn.setMessageListener(this);}catch(IOExceptionioe){showError(ioe.toString());}}publicvoidpauseApp(){msgConn=null;receiver.release();//關(guān)閉連接}publicvoiddestroyApp(booleanundicational){msgConn=null;receiver.release();//關(guān)閉連接}//處理用戶界面命令publicvoidcommandAction(Commandcmd,Displayabledisplayable){if(cmd==cmdExit){destroyApp(false);notifyDestroyed();}elseif(cmd==cmdSelect){index=mainMenu.getSelectedIndex();江蘇大學(xué)本科畢業(yè)論文if(mainMenu.getString(index).equals("發(fā)送短消息")){sender.showUI();}elseif(mainMenu.getString(index).equals("收件箱")){inbox.showUI(display.getCurrent());}}elseif(cmd==cmdBack){display.setCurrent(backDisplayable);}elseif(cmd==cmdRead){inbox.showUI(backDisplayable);}}//顯示錯誤信息publicvoidshowError(StringerrMsg){if(errAlert==null){Imageimg=null;try{img=Image.createImage("/error.png");}catch(IOExceptionioe){}errAlert=newAlert("錯誤",errMsg,img,AlertType.ERROR);errAlert.setTimeout(2000);}Displayabled=display.getCurrent();errAlert.setString(errMsg);display.setCurrent(errAlert,d);}//通知用戶收件箱收到一條新信息publicvoidnotifyUser(){if(messageAlert==null){Imageimg=null;try{img=Image.createImage("/message.png");}catch(IOExceptionioe){}messageAlert=newAlert("信息","收到一條短信息!",img,AlertType.INFO);messageAlert.setTimeout(Alert.FOREVmessageAlert.addCommand(cmdBack);ageAlert.addCommand(cmdRead);messageAlert.setCommandListener(this);}if(display.getCurrent()!=inbox){backDisplayable=display.getCurrent();}display.setCurrent(messageAlert);}//當(dāng)有消息到來時,監(jiān)聽連接的監(jiān)聽器回調(diào)該方法publicvoidnotifyIncomingMessage(MessageConnectioif(conn==msgConn){receiver.handleMessage();}}//返回主菜單publicvoidBackToMainMenu(){display.setCurrent(mainMenu);}}(2)SenderForm.javapackagestudy.sms;importjavax.microedition.io.Connector;importjavax.wireless.messaging.MessageConnection;importjavax.wireless.messaging.TextMessage;importjava.io.IOException;importjavax.microedition.lcdui.*;publicclassSenderFormextendsFormimplementsRunnable,CommandListener{privateSMSMIDletmidlet;privateStringdesPort;//目的端口privateStringreceiverAddress="";//收件人地址江蘇大學(xué)本科畢業(yè)論文privateStringmessageContent="";//發(fā)送的消息privateprivateprivateTextFieldtfPhoneNumber;TextFieldtfMessageContent;CommandcmdBack=newCommand("返回",Command.BACK,1);privateCommandcmdSend=newCommand("發(fā)送",Command.SCREEN,2);publicSenderForm(SMSMIDletmidlet,StringdesPort){super("編輯短消息");this.midlet=midlet;this.desPort=desPort;//構(gòu)造用戶界面tfPhoneNumber=newTextField("收件人號碼:","",20,TextField.PHONENUMBER);tfMessageContent=newTextField("消息內(nèi)容:","",140,TextField.ANY);tfMessageContent.setPreferredSize(-1,append(tfPhoneNumber);append(tfMessageContent);addCommand(cmdBack);addCommand(cmdSend);setCommandListener(this);}//顯示信息輸入界面publicvoidshowUI(){Displaydisplay=Display.getDisplay(midlet);display.setCurrent(this);}//處理用戶界面命令publicvoidcommandAction(Commandcmd,Displayabledisplayable){if(cmd==cmdBack){midlet.BackToMainMenu();}elseif(cmd==cmdSend){this.messageContent=tfMessageContent.getString();this.receiverAddress=tfPhoneNumber.getString();if(!receiverAddress.equals("")){//創(chuàng)建并啟動短消息發(fā)送線程Threadt=newThread(this);t.start();}}}//短消息發(fā)送線程執(zhí)行體,建立連接并發(fā)送短消息publicvoidrun(){try{StringsmsUrl="sms://"+receiverAddress+":"+desPort;MessageConnectionmsgConn=(MessageConnection)Connector.open(smsUrl);TextMessagetextMessage=(TextMessage)msgConn.newMessage(MessageConnection.TEXT_MESSAGE);textMessage.setPayloadText(messageContent);msgConn.send(textMessage);msgConn.close();}catch(IOExceptionioe){midlet.showError("發(fā)送消息錯誤!\n"+ioe.toString());}}}(3)Receiver.javapackagestudy.sms;importjavax.wireless.messaging.MessageConnection;importjavax.wireless.messaging.TextMessage;importjavax.wireless.messaging.Message;importjava.io.IOException;importjavax.microedition.io.Connector;publicclassReceiverimplementsRunnable江蘇大學(xué)本科畢業(yè)論文{privateSMSMIDletmidlet;privateintpendingMessage;privatebooleandead=true;privateMessageConnectionmsgConn;privateInboxinbox;publicReceiver(SMSMIDletmidlet,Inboxinbox){this.midlet=midlet;this.inbox=inbox;}//在端口Port打開一個SMS連接,并啟動一個接收消息的線程publicMessageConnectionopenConnection(Stringport)throwsIOException{msgConn=(MessageConnection)Connector.open("sms://:"+port);pendingMessage=0;dead=false;//創(chuàng)建消息接收線程,并啟動Threadt=newThread(this);t.start();returnmsgConn;}//終止線程publicsynchronizedvoidrelease(){try{msgConn.setMessageListener(null);dead=true;notify();//通知線程}catch(IOExceptionioe){}}//處理消息publicsynchronizedvoidhandleMessage(){pendingMessage++;notify();}//返回收件箱publicInboxgetInbox(){returninbox;}//接收到來的消息publicvoidrun(){while(!dead){synchronized(this){while(!dead&&pendingMessage==0){try{wait();}catch(InterruptedExceptionie){}}}if(!dead){try{Messagemessage=msgConn.receive();pendingMessage--;if(messageinstanceofTextMessage){inbox.add((TextMessage)message);midlet.notifyUser();}else{midlet.showError("不能解析的消息格}}catch(IOExceptionioe){midlet.showError("接收信息錯誤!\n"+ioe.toString());}}}try{msgConn.close();msgConn=null;}catch(IOExceptionioe){}}}江蘇大學(xué)本科畢業(yè)論文(4)Inbox.javapackagestudy.sms;importjavax.microedition.lcdui.*;importjavax.wireless.messaging.TextMessage;importjava.util.Vector;publicclassInboxextendsFormimplementsCommandListener{privateSMSMIDletmidlet;privateVectorcontents;privateVectorphoneNumbers;privateintindex=-1;privateStringItemsiPN;privateStringItemsiContent;privateCommandcmdBack;privateCommandcmdNext;privateDisplayablebackScreen;publicInbox(SMSMIDletmidlet){super("編輯短消息");this.midlet=midlet;contents=newVector();phoneNumbers=newVector();//創(chuàng)建收件箱圖形用戶界面siPN=newStringItem("發(fā)件人:","");siContent=newStringItem("內(nèi)容:","");append(siPN);append(siContent);cmdBack=newCommand("返回",Command.BACK,1);cmdNext=newCommand("下一條",Command.SCREEN,2);addCommand(cmdBack);addCommand(cmdNext);setCommandListener(this);}//收件箱中添加一條文本消息publicvoidadd(TextMessagemsg){Stringpn=msg.getAddress();intaindex=pn.indexOf(":");phoneNumbers.addElement(pn.substring(aindex+1));contents.addElement(msg.getPayloadT}//顯示收件箱用戶界面publicvoidshowUI(DisplayablebackScreen){this.backScreen=backScreen;Displaydisplay=Display.getDisplay(midlet);index=phoneNumbers.size();if(index==0){Alertalert=newAlert("","",null,AlertType.INFO);alert.setTimeout(2000);display.setCurrent(alert,backScreen);}else{next();display.setCurrent(this);}}privatevoidnext(){index--;if(index==-1){index=phoneNumbers.size()-1;}siPN.setText((String)phoneNumbers.elementAt(index));siContent.setText("\n"+(String)contents.elementAt(index));}//處理用戶界面命令publicvoidcommandAction(Commandcmd,Displayabled){if(cmd==cmdBack){Displaydisplay=Display.getDisplay(midlet);display.setCurrent(backScreen);}elseif(cmd==cmdNext){next();}}}ext());江蘇大學(xué)本科畢業(yè)論文(1)SocketClient.javapackagej2mestudy.liaotian;importjavax.microedition.lcdui.*;importjavax.microedition.midlet.*;publicclassSocketClientextendsMIDletimplementsCommandListener{privateDisplaydisplay;privateFormf;privateTextFieldtf;privateCommandcommand;privateStringItemsi;publicSocketClient(){display=Display.getDisplay(this);f=newForm("socketclient測試");command=newCommand("發(fā)送",Command.ITEM,1);f.addCommand(command);f.setCommandListener(this);tf=newTextField("請輸入文字:",null,10,TextField.ANY);f.append(tf);si=newStringItem(null,"");f.append(si);}publicvoidstartApp(){display.setCurrent(f);}publicvoidcommandAction(Commandcommand,Displayabledisplayable){SocketThread(tf.getString(),si).start();}publicvoidpauseApp(){}publicvoiddestroyApp(booleanunconditional){}}(2)SocketServer.javapackagej2mestudy.liaotian;importjava.io.*;import.*;publicclassSocketServer{publicstaticvoidmain(Stringargs[]){try{ServerSocketss=newServerSocket(12345);System.out.println("server啟動");while(true){Sockets=ss.accept();DataInputStreamdis=newDataInputStream(s.getInputStream());DataOutputStreamdos=newDataOutputStream(s.getOutputStream());StringBufferbuffer=newbuffer.append(dis.readUTF());dos.writeUTF(buffer.toString());dos.flush();System.out.println(buffer.toString());}}catch(Exceptione){}}}(3)SocketThread.javapackagej2mestudy.liaotian;importjavax.microedition.lcdui.*;江蘇大學(xué)本科畢業(yè)論文importjavax.microedition.io.*;importjava.io.*;publicclassSocketThreadextendsThread{privateStringcontext;privateStringItemsi;publicSocketThread(Stringc,StringItems){context=c;si=s;}publicvoidrun(){Stringurl="socket://:12345";SocketConnectionsc=null;DataInputStreamdis=null;DataOutputStreamdos=null;StringBufferbuffer=newStringBuffer();try{sc=(SocketConnection)Connector.opendis=sc.openDataInputStream();dos=sc.openDataOutputStream();dos.writeUTF(context);dos.flush();buffer.append(dis.readUTF());}catch(Exceptione){}finally{si.setText(si.getText()+buffer+"\n");try{if(dos!=null){dos.close();}if(dis!=null){dis.close();}if(sc!=null){sc.close();}}catch(Exceptione){}}}}江蘇大學(xué)本科畢業(yè)論文(1)Sender.javapackagej2mestudy.socket.liaotian;importjava.io.*;publicclassSenderextendsThread{privateOutputStreamos;//輸出流privateStringmessage;//用于發(fā)送的數(shù)據(jù)publicSender(OutputStreamos){this.os=os;//設(shè)置用于發(fā)送數(shù)據(jù)的輸出流start();//啟動發(fā)送線程}//同步方法,接收需發(fā)送的字符串publicsynchronizedvoidsend(Stringmessage=msg;//接收需發(fā)送的數(shù)據(jù)notify();//喚醒線程}publicsynchronizedvoidrun(){//同步方法runwhile(true){接if(message==null){try{wait();}catch(InterruptedExceptione){}}//喚醒后如果需發(fā)送的數(shù)據(jù)仍為空,則線程結(jié)束if(message==null)break;try{os.write(message.getBytes());os.write("\r\n".getBytes());}catch(IOExceptionioe){System.out.println("錯誤:"+ioe.getMessage());}空,進入等待狀態(tài)message=null;}}publicsynchronizedvoidstop(){//同步方法,用于停止線程message=null;//將需發(fā)送的數(shù)據(jù)設(shè)為空notify();//喚醒線程}}(2)SocketClient.javapackagej2mestudy.socket.liaotian;importjavax.microedition.midlet.*;importjavax.microedition.io.*;importjavax.microedition.lcdui.*;importjava.io.*;publicclassSocketClientextendsMIDletimplementsRunnable,CommandListener{privateDisplaydisplay;privateFormf;privateTextFieldtf;//用于輸入要發(fā)送的字符串privateStringItemsi;//用于顯示接收到的字符串privateCommandsendCommand=newCommand("發(fā)送",Command.ITEM,1);privateCommandexitCommand=newCommand("退出",Command.EXIT,1);////套接字//輸//輸出流//用連接InputStreamis;入流OutputStreamos;Sendersender;于發(fā)送數(shù)據(jù)的線程publicSocketClient(){display=Display.getDisplay(this);f=newForm("SocketClient");tf=newTextField("發(fā)送:","",30,江蘇大學(xué)本科畢業(yè)論文TextField.ANY);si=newStringItem("狀態(tài):","");f.append(tf);f.append(si);f.addCommand(exitCommand);f.addCommand(sendCommand);f.setCommandListener(this);display.setCurrent(f);}publicvoidstartApp(){newThread(this).start();//開始客戶端連接的線程}publicvoidrun(){try{//客戶端套接字,連接到主機localhost的5000端口sc=(SocketConnection)Connector.open("socket://localhost:5000");si.setText("連接到服務(wù)器");//設(shè)置當(dāng)前顯示的狀態(tài)is=sc.openInputStream();//打開輸入流os=sc.openOutputStream();//打開輸出流sender=newSender(os);//建立線程,用于發(fā)送數(shù)據(jù)while(true){//永久循環(huán),用于接收數(shù)據(jù)并顯示StringBuffersb=newStringBuffer();sb.append((char)c);}if(c==-1)break;//輸入流關(guān)閉,跳出循環(huán)si.setText("接收到消息-"+sb.toString());//顯示收到的數(shù)據(jù)}////關(guān)閉輸入/輸出流和Socket連接//si.setText("連接關(guān)閉");設(shè)置當(dāng)前顯示的狀態(tài)f.removeCommand(sendCommand);}catch(ConnectionNotFoundExceptione){運行服務(wù)器端");destroyApp(true);notifyDestroyed();}catch(Exceptione){System.out.println("錯誤:"+e.getMessage());}}publicvoidpauseApp(){}publicvoiddestroyApp(booleanunconditional){stop();}publicvoidcommandAction(Commandc,Displayables){if(c==exitCommand){destroyApp(true);notifyDestroyed();}if(c==sendCommand){sender.send(tf.getString());//將輸入的字符串發(fā)送}}//關(guān)閉輸入/輸出流和Socket連接publicvoidstop(){try

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論