• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      基于Android平臺的即時通信系統(tǒng)設(shè)計(jì)

      2015-04-12 00:00:00雷文禮等
      現(xiàn)代電子技術(shù) 2015年3期

      摘 要: 隨著Internet與移動通信的飛速發(fā)展及相互融合,通過無線網(wǎng)絡(luò)高速接入到Internet成為現(xiàn)實(shí),即時通信軟件作為一種便捷的網(wǎng)絡(luò)通信工具,其應(yīng)用范圍從單純的網(wǎng)絡(luò)聊天工具逐漸變成工作生活所不可缺的信息交流平臺。采用Socket網(wǎng)絡(luò)編程設(shè)計(jì),在Android平臺下實(shí)現(xiàn)了基于TCP/IP協(xié)議的網(wǎng)絡(luò)通信系統(tǒng)。實(shí)驗(yàn)測試證明,系統(tǒng)運(yùn)行正常,可以實(shí)現(xiàn)在Android平臺上的即時通信功能。

      關(guān)鍵詞: Android; 即時通信; 網(wǎng)絡(luò); Socket

      中圖分類號: TN915.4?34 文獻(xiàn)標(biāo)識碼: A 文章編號: 1004?373X(2015)03?0013?03

      Design of instant communication system based on Android platform

      LEI Wen?li, REN Xin?cheng, ZHANG Dong, GAO Ying

      (College of Physics and Electronic Information, Yan’an University, Yan’an 716000, China)

      Abstract: With the rapid development and mutual fusion of Internet and mobile communication, it comes true for the network communication system to access the Internet through high?speed wireless network. As a kind of convenient network communication tool, the instant messaging software has gradually turned into indispensable platform for the exchange of information in work and life from the simple network chat tool. The network communication system based on TCP/IP protocol was realized on the platform of Android, which uses the Socket network programming. The experiment and testing show that the system runs well, and can achieve real?time communication function on Android platform.

      Keywords: Android; instant communication; network; Socket

      0 引 言

      隨著移動通信技術(shù)的快速發(fā)展,人們對移動終端的功能需求也日益增高。即時通信軟件作為網(wǎng)絡(luò)用戶通信交流不可或缺的工具,從單純的網(wǎng)絡(luò)聊天工具逐漸變成工作生活的信息交流平臺,即時通信的用戶規(guī)模也呈現(xiàn)出快速增長的趨勢[1]。本文采用Socket網(wǎng)絡(luò)編程設(shè)計(jì),在Android平臺下實(shí)現(xiàn)了基于TCP/IP協(xié)議的網(wǎng)絡(luò)通信系統(tǒng)。本系統(tǒng)的設(shè)計(jì)方案為后期相關(guān)通信系統(tǒng)設(shè)計(jì)提供了部分技術(shù)參考,并具有一定的應(yīng)用價值[2]。

      1 Android平臺

      Android是一個由Linux+Java構(gòu)成的開源的移動設(shè)備軟件平臺,它是基于Linux內(nèi)核的系統(tǒng),具有良好的可移植性 [3?4]。Android平臺的框架結(jié)構(gòu)從上至下包含了五個部分:應(yīng)用程序(Applications)、應(yīng)用框架(Application Framework)、開發(fā)庫(Libraries)、運(yùn)行時環(huán)境(Android Runtime)以及Linux內(nèi)核(Linux Kernel),可方便地為應(yīng)用程序提供系統(tǒng)調(diào)用,為應(yīng)用程序的開發(fā)提供了便利。

      2 系統(tǒng)設(shè)計(jì)

      Android系統(tǒng)中的網(wǎng)絡(luò)通信可以通過四種方法實(shí)現(xiàn):

      (1) 可以調(diào)用JDK中的相關(guān)網(wǎng)絡(luò)通信的API函數(shù)[5]實(shí)現(xiàn)。

      (2) 基于ServerSocket和Socket方法創(chuàng)建TCP/IP協(xié)議的網(wǎng)絡(luò)通信。

      (3)通過DatagramSocket和MulticastSocket創(chuàng)建UDP協(xié)議的網(wǎng)絡(luò)通信。

      (4)通過JDK中提供的URL等網(wǎng)絡(luò)通信API來實(shí)現(xiàn),這種方法采用在Android系統(tǒng)內(nèi)置HTTPClient,發(fā)送HTTP請求,獲取HTTP響應(yīng)的方式使得通信得以實(shí)現(xiàn)。

      本文采用上述第(2)種方法實(shí)現(xiàn)網(wǎng)絡(luò)通信。

      2.1 用ServerSocket創(chuàng)建TCPClient

      在系統(tǒng)中,服務(wù)器端通過ServerSocket類監(jiān)聽是否有客戶端發(fā)出Socket連接請求,若沒有,則一直處于等待狀態(tài);若有,則進(jìn)行后續(xù)相應(yīng)操作。ServerSocket類通過Socket accept()函數(shù)實(shí)現(xiàn)監(jiān)聽網(wǎng)絡(luò)中客戶端的連接請求[6]。

      Socket accept()函數(shù),如果監(jiān)聽到有客戶端發(fā)出的Socket連接請求,則連接;若沒有監(jiān)聽到,則進(jìn)入等待狀態(tài)。

      ServerSocket類通過以下幾個構(gòu)造器來創(chuàng)建ServerSocket對象:

      (1) ServerSocket(int port)函數(shù),通過指定的某一個端口port號創(chuàng)建一個ServerSocket。端口號的有效數(shù)字在0~65 535之間。

      (2) ServerSocket(int port,int backlog)函數(shù),在參數(shù)中增加backlog,可以用來改變隊(duì)列長度。

      (3) ServerSocket(int port,int backlog,InetAddress localAddr)函數(shù),在參數(shù)中增加InetAddress和localAddr,用于在機(jī)器存在多個IP地址的情況下,將其綁定到指定的IP地址。

      當(dāng)系統(tǒng)中Socket通信結(jié)束后,可以用ServerSocket中的close()函數(shù)關(guān)閉該終端的Socket通信。

      在某一時刻,服務(wù)器可能不僅會監(jiān)聽到一個客戶端的連接請求,當(dāng)有多個客戶端的連接請求時,服務(wù)器應(yīng)該能處理所有客戶端的連續(xù)請求。本文中服務(wù)器端的實(shí)驗(yàn)程序運(yùn)行在PC上,服務(wù)器與客戶機(jī)端的Socket通信如圖1所示。

      圖1 服務(wù)流程圖

      當(dāng)使用Socket進(jìn)行通信時,客戶端程序可以通過以下兩個Socket的構(gòu)造器連接到指定服務(wù)器端。

      (1)Socket(InetAddress/String remoteAddress,int port):用于創(chuàng)建一個連接到指定遠(yuǎn)程主機(jī)、遠(yuǎn)程端口的 Socket,該函數(shù)中使用本地主機(jī)默認(rèn)IP地址進(jìn)行連接。

      (2)Socket(InetAddress/String remoteAddress,int port, InetAddress localAddr, int localPort):用于創(chuàng)建一個連接到指定遠(yuǎn)程主機(jī)和遠(yuǎn)程端口的Socket,該函數(shù)中指定了本地IP地址和使用的端口號。

      以上兩個構(gòu)造器中指定的遠(yuǎn)程主機(jī),可以使用InetAddress表示,也可通過用String對象表示。在程序中,一般使用String對象表示遠(yuǎn)程IP地址。同時,比較上述兩種方法,在本地主機(jī)只有一個IP地址的情況下,第一個方法由于使用默認(rèn)的IP地址,無需指定,因此更為簡單。如以下代碼所示:

      Socket s=new Socket(“192.168.12.59”, 30000);

      //創(chuàng)建連接到本機(jī),30000 端口的 Socket

      當(dāng)客戶端程序運(yùn)行上面的代碼時,客戶端程序?qū)⑦B接到指定服務(wù)器端,服務(wù)器端的ServerSocket類中的accept方法將開始向下執(zhí)行,這樣在服務(wù)器端和客戶端就產(chǎn)生了用于互相連接的Socket通信。

      客戶端與服務(wù)器端建立了Socket之后,就可以相互進(jìn)行通信。當(dāng)需要獲取輸入流和輸出流時,Socket可以通過以下兩種方法來實(shí)現(xiàn)。

      (1)InputStream getInputStream():函數(shù)將返回該Socket對象對應(yīng)的輸入流,程序可以通過該輸入流取出需要的數(shù)據(jù)。

      (2)OutputStream getOutputStream():函數(shù)將返回該Socket對象對應(yīng)的輸出流,程序可以通過該輸出流輸出數(shù)據(jù)。

      2.2 加載工程文件

      打開 Android 集成開發(fā)環(huán)環(huán)境并加載工程文件:選擇任務(wù)欄的“file??>import”導(dǎo)入項(xiàng)目文件,從常規(guī)(General)文件的選項(xiàng)中選擇已經(jīng)存在的項(xiàng)目到工作區(qū)

      接著,選擇“Select root directory”選項(xiàng),通過瀏覽文件夾功能選擇服務(wù)器或者客戶端程序目錄,這里選擇“EX02_08/tcp/JavaServer”,同時勾選“Copy project into workspace”復(fù)制到工作區(qū),按下“確定”按鈕,再選擇“Finish”按鈕即可。

      加載完工程后,在 Workspace 里找到 JavaServer工程,右擊工程名,選擇 Run As?>Java Application,運(yùn)行 JavaServer 程序。如圖3所示。

      3 系統(tǒng)測試

      本文在模擬器中對程序進(jìn)行測試,操作如下:右鍵項(xiàng)目名稱?>run as?>Android Application,這樣即可啟動運(yùn)行該Android程序,如圖5所示。

      在發(fā)送框中輸入“5554”,如圖6所示。

      輸入完后,點(diǎn)擊發(fā)送按鈕,這時下面的 TextView 文本框中將顯示從服務(wù)器發(fā)送過來的數(shù)據(jù)。如圖7所示。

      參考文獻(xiàn)

      [1] 張輝,曹麗娜.現(xiàn)代通信原理與技術(shù)[M].西安:西安電子科技大學(xué)出版社,2005.

      [2] 何忠龍,陳萱華,曹迎槐.多媒體通信技術(shù)[M].北京:北京希望電子出版社,2006.

      [3] 王曉軍,毛京麗.計(jì)算機(jī)通信網(wǎng)[M].北京:北京郵電出版社,2007.

      [4] 肖杰,譚慶平.基于J2EE的Web構(gòu)件平臺的設(shè)計(jì)[J].長沙大學(xué)學(xué)報(bào),2005,19(3):43?47.

      [5] 田小波,陳蜀宇.MVC設(shè)計(jì)模式在J2EE架構(gòu)下的研究與應(yīng)用[J].西華大學(xué)學(xué)報(bào),2007(2):33?35.

      [6] 高振東.基于J2EE平臺的EJB技術(shù)研究與應(yīng)用[J].航空計(jì)算技術(shù),2003,33(1):28?32.

      七台河市| 钟山县| 广宁县| 曲阜市| 合作市| 遵化市| 台北市| 青海省| 荥经县| 喀什市| 桦甸市| 河曲县| 鸡西市| 司法| 贵德县| 平塘县| 揭阳市| 贺兰县| 华宁县| 裕民县| 陆良县| 孝感市| 卫辉市| 阳信县| 鲁山县| 平度市| 六枝特区| 天等县| 微山县| 中江县| 五寨县| 苍南县| 宜良县| 大荔县| 武邑县| 河南省| 临汾市| 新巴尔虎右旗| 宁陕县| 育儿| 福清市|