国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

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

2015-02-21 02:50雷文禮任新成張棟高瑛
現(xiàn)代電子技術(shù) 2015年3期
關(guān)鍵詞:監(jiān)聽(tīng)服務(wù)器端網(wǎng)絡(luò)通信

雷文禮,任新成,張棟,高瑛

(延安大學(xué)物理與電子信息學(xué)院,陜西延安716000)

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

雷文禮,任新成,張棟,高瑛

(延安大學(xué)物理與電子信息學(xué)院,陜西延安716000)

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

Android;即時(shí)通信;網(wǎng)絡(luò);Socket

0 引言

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

1 Android平臺(tái)

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

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

Android系統(tǒng)中的網(wǎng)絡(luò)通信可以通過(guò)四種方法實(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)通過(guò)DatagramSocket和MulticastSocket創(chuàng)建UDP協(xié)議的網(wǎng)絡(luò)通信。

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

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

2.1 用ServerSocket創(chuàng)建TCPClient

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

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

ServerSocket類通過(guò)以下幾個(gè)構(gòu)造器來(lái)創(chuàng)建Server?Socket對(duì)象:

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

(2)ServerSocke(tint port,int backlog)函數(shù),在參數(shù)中增加backlog,可以用來(lái)改變隊(duì)列長(zhǎng)度。

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

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

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

圖1 服務(wù)流程圖

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

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

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

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

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

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

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

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

2.2 加載工程文件

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

圖2 加載工程文件

接著,選擇“Select root directory”選項(xiàng),通過(guò)瀏覽文件夾功能選擇服務(wù)器或者客戶端程序目錄,這里選擇

“EX02_08/tcp/JavaServer”,同時(shí)勾選“Copy project into workspace”復(fù)制到工作區(qū),按下“確定”按鈕,再選擇“Finish”按鈕即可。

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

圖3 運(yùn)行JavaServer程序

2.3 配置應(yīng)用程序

右鍵項(xiàng)目?>Run as?>Run Configuration進(jìn)入如圖4所示界面。在該界面中,點(diǎn)擊Browse按鈕,選擇要運(yùn)行的項(xiàng)目。然后選擇Target切換到后續(xù)界面,選擇運(yùn)行的AVD,將AVD前面的方框設(shè)置為選擇狀態(tài)。點(diǎn)擊Run。

圖4 配置界面圖

3 系統(tǒng)測(cè)試

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

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

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

圖5 模擬器運(yùn)行界面

圖6 發(fā)送界面圖

圖7 接收界面圖

測(cè)試結(jié)果表明,該系統(tǒng)運(yùn)行正常,可以實(shí)現(xiàn)在Android平臺(tái)上的即時(shí)通信功能。

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

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

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

[4]肖杰,譚慶平.基于J2EE的Web構(gòu)件平臺(tái)的設(shè)計(jì)[J].長(zhǎng)沙大學(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平臺(tái)的EJB技術(shù)研究與應(yīng)用[J].航空計(jì)算技術(shù),2003,33(1):28?32.

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)

With the rapid development and mutual fusion of Internet and mobile communication,it comes true for the net?work communication system to access the Internet through high?speed wireless network.As a kind of convenient network commu?nication 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.

Android;instant communication;network;Socket

TN915.4?34

A

1004?373X(2015)03?0013?03

雷文禮(1982—),男,講師。主要研究方向?yàn)闊o(wú)線通信技術(shù)、通信終端設(shè)計(jì)。

2014?08?19

延安市科學(xué)技術(shù)研究發(fā)展計(jì)劃項(xiàng)目(2014KG?04);陜西省教育廳科研計(jì)劃項(xiàng)目資助(14JK1829);陜西省科學(xué)技術(shù)研究發(fā)展計(jì)劃項(xiàng)目(工業(yè)攻關(guān))(2014K05?61);國(guó)家自然科學(xué)基金(61379026)

猜你喜歡
監(jiān)聽(tīng)服務(wù)器端網(wǎng)絡(luò)通信
Linux環(huán)境下基于Socket的數(shù)據(jù)傳輸軟件設(shè)計(jì)
千元監(jiān)聽(tīng)風(fēng)格Hi-Fi箱新選擇 Summer audio A-401
基于網(wǎng)絡(luò)通信的智能照明系統(tǒng)設(shè)計(jì)
網(wǎng)絡(luò)通信中信息隱藏技術(shù)的應(yīng)用
基于網(wǎng)絡(luò)通信的校園智能音箱設(shè)計(jì)
淺析異步通信層的架構(gòu)在ASP.NET 程序中的應(yīng)用
談?dòng)?jì)算機(jī)網(wǎng)絡(luò)通信常見(jiàn)問(wèn)題及技術(shù)發(fā)展
網(wǎng)絡(luò)監(jiān)聽(tīng)的防范措施
基于Qt的安全即時(shí)通訊軟件服務(wù)器端設(shè)計(jì)
應(yīng)召反潛時(shí)無(wú)人機(jī)監(jiān)聽(tīng)航路的規(guī)劃
六枝特区| 炉霍县| 哈尔滨市| 莆田市| 安徽省| 星座| 栾川县| 新营市| 汨罗市| 治多县| 九台市| 威海市| 潍坊市| 大足县| 甘洛县| 江安县| 陇南市| 镇康县| 宁南县| 海阳市| 平定县| 金阳县| 重庆市| 那坡县| 洮南市| 色达县| 福鼎市| 图木舒克市| 玉田县| 马山县| 繁峙县| 桂阳县| 丰台区| 双峰县| 花莲市| 容城县| 绍兴市| 栾川县| 横峰县| 哈尔滨市| 海城市|