亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于Android平臺(tái)的無(wú)線局域網(wǎng)通信APP設(shè)計(jì)與實(shí)現(xiàn)

        2018-07-27 01:30:48王霄翔
        電子制作 2018年13期
        關(guān)鍵詞:端口號(hào)服務(wù)器端局域網(wǎng)

        王霄翔

        (南京市第十三中學(xué),江蘇南京,210000)

        0 引言

        隨著智能移動(dòng)終端設(shè)備極大范圍的普及,手機(jī)應(yīng)用軟件(APP)正掀起互聯(lián)網(wǎng)式的浪潮,完善原始系統(tǒng)的不足與個(gè)性化的缺失。APP將獲取到的數(shù)據(jù)信息直觀呈現(xiàn),用戶可以更加便捷地參與到各個(gè)領(lǐng)域,實(shí)現(xiàn)對(duì)其他設(shè)備的交互控制。Android系統(tǒng),作為手機(jī)應(yīng)用軟件的主流系統(tǒng)之一,以Linux為基礎(chǔ)為當(dāng)前流行的各種移動(dòng)終端設(shè)備提供了開源開發(fā)平臺(tái)。Android系統(tǒng)已經(jīng)是目前使用最為廣泛的智能手機(jī)操作系統(tǒng)之一,獲得了大量手機(jī)生產(chǎn)商和智能終端應(yīng)用開發(fā)商的追捧[1]。在硬件方面,使用Android系統(tǒng)的手機(jī)廠商可獲谷歌(Google)強(qiáng)大的技術(shù)支撐。軟件方面,程序開發(fā)人員可享受基于android平臺(tái)的應(yīng)用程序權(quán)限,并可上傳軟件以及其開源代碼,提供給Android用戶或開發(fā)者免費(fèi)下載使用。

        更重要的一點(diǎn)是,Android終端具備WiFi無(wú)線連接的功能,開發(fā)者可以在系統(tǒng)所提供的WiFi模塊功能上進(jìn)一步開發(fā),本文在系統(tǒng)的設(shè)計(jì)上巧妙地應(yīng)用了這一功能并進(jìn)行拓展。在Android開發(fā)平臺(tái)上可采用基于TCP/IP或UDP/IP協(xié)議的socket編程思想,實(shí)現(xiàn)手機(jī)客戶終端通過(guò)WiFi無(wú)線網(wǎng)絡(luò)與其他手機(jī)終端或Personal Computer(PC)的數(shù)據(jù)傳輸。為了方便用戶更加快捷的實(shí)現(xiàn)即時(shí)通訊,本文設(shè)計(jì)一款基于Android平臺(tái)的無(wú)線局域網(wǎng)通信APP。將傳統(tǒng)的計(jì)算機(jī)網(wǎng)頁(yè)平臺(tái)轉(zhuǎn)變?yōu)楸銛y式手機(jī)應(yīng)用,也進(jìn)一步為實(shí)現(xiàn)真正的智能控制方式提供了可能。

        基于飛鴿傳書以及TCP/IP及UDP/IP協(xié)議,實(shí)現(xiàn)了兩種方式的局域網(wǎng)通信。具體的創(chuàng)新的如下:

        (1)通過(guò)無(wú)線局域網(wǎng)建立連接以及基于飛鴿傳書協(xié)議,實(shí)現(xiàn)與Android手機(jī)移動(dòng)終端之間的即時(shí)通訊,包括消息發(fā)送,文件傳輸?shù)取?/p>

        (2)M2M功能模塊中,當(dāng)多個(gè)用戶終端同處在一個(gè)局域網(wǎng)下可通過(guò)APP自動(dòng)尋找并連接周圍的其他用戶終端并連接。

        (3)基于UDP/IP和TCP/IP協(xié)議以及UDP發(fā)送全網(wǎng)廣播等方法,進(jìn)一步實(shí)現(xiàn)局域網(wǎng)下PC端到Android客戶端的socket通信。

        1 無(wú)線局域網(wǎng)通信APP的設(shè)計(jì)與實(shí)現(xiàn)

        ■1.1 Android系統(tǒng)架構(gòu)

        Android是一個(gè)Google公司推出的以Linux為基礎(chǔ)的開源操作系統(tǒng)是首個(gè)為移動(dòng)終端打造的真正開放和完整的移動(dòng)平臺(tái)。Google重新設(shè)計(jì)了Java虛擬機(jī),使得Android的Java應(yīng)用更接近于底層系統(tǒng),運(yùn)行效率更高,并且在被監(jiān)控的情況下運(yùn)行,安全性也更高[4]。

        Android操作系統(tǒng)采用了軟件疊層的架構(gòu),自頂向下共包含四個(gè)層次:應(yīng)用層,應(yīng)用框架層,組件庫(kù)和虛擬機(jī)層,Linux內(nèi)核層[5],如圖1所示。Android架構(gòu)的層次劃分合理,適合底層組件開發(fā)和移植同時(shí)應(yīng)用層軟件開發(fā)也方便,對(duì)于開發(fā)人員很有吸引力。

        圖1 Android系統(tǒng)架構(gòu)

        ■1.2 軟件詳細(xì)功能設(shè)計(jì)與實(shí)現(xiàn)

        1.2.1 AndroidSocket通信

        Android與服務(wù)器有兩種通信方式,分別為Http通信和Socket通信。在我們的日常開發(fā)中不論是響應(yīng)網(wǎng)絡(luò)的請(qǐng)求還是向網(wǎng)絡(luò)中發(fā)送請(qǐng)求,通常都是用socket實(shí)現(xiàn)的[2]。Socket又名套接字,是一種抽象層,應(yīng)用程序通過(guò)它來(lái)發(fā)送和接收數(shù)據(jù)。使用Socket可以將應(yīng)用程序添加到網(wǎng)絡(luò)中,與處于同一網(wǎng)絡(luò)中的其他應(yīng)用程序進(jìn)行通信。簡(jiǎn)單來(lái)說(shuō),Socket提供了程序內(nèi)部與外界通信的端口并為通信雙方的提供了數(shù)據(jù)傳輸通道。

        基于TCP/IP協(xié)議的Socket通信是在雙方通過(guò)IP地址以及端口號(hào),建立連接后可直接進(jìn)行數(shù)據(jù)的傳輸,在連接時(shí)可實(shí)現(xiàn)信息的主動(dòng)推送,不需要在傳輸時(shí)不停地由客戶端發(fā)送請(qǐng)求給服務(wù)器?;赨DP/IP協(xié)議建立通信過(guò)程更為簡(jiǎn)單,提供的是無(wú)連接的數(shù)據(jù)報(bào)服務(wù),只要對(duì)端都有彼此的IP地址及端口號(hào)即可,不需要確認(rèn)是否建立連接了,不對(duì)數(shù)據(jù)報(bào)進(jìn)行檢查即可發(fā)送數(shù)據(jù)包。相比于TCP/IP協(xié)議的通信,UDP線程不安全且易丟失數(shù)據(jù)包。TCP/IP通信協(xié)議是比較偏向物理硬件底層的網(wǎng)絡(luò)通信協(xié)議,并且是一種可跨多平臺(tái)編程的計(jì)算機(jī)語(yǔ)言。

        在基于TCP/IP協(xié)議的Socket編程模式中,Socket類是用來(lái)建立客戶端程序,ServiceSocket類是用來(lái)建立服務(wù)器端程序。開發(fā)通信程序時(shí),首先建立服務(wù)器端,本設(shè)計(jì)中電腦作為服務(wù)器端。建立一個(gè)基本的TCP/IP協(xié)議的無(wú)線局域網(wǎng)socket通信,具體實(shí)現(xiàn)步驟歸納如圖2所示。

        (1)服務(wù)器端創(chuàng)建:聲明一個(gè)ServerSocket對(duì)象并制定端口號(hào);

        (2)調(diào)用ServerSocket的accept()方法,等待接受客戶端所發(fā)送的連接請(qǐng)求。注意accept()方法在沒有數(shù)據(jù)進(jìn)行接收的處于堵塞狀態(tài),即程序不運(yùn)行;

        圖2 基于TCP/IP協(xié)議的Socket通信原理

        (3)客戶端創(chuàng)建:一個(gè)Socket對(duì)象,指定服務(wù)器端的IP地址和端口號(hào);

        (4)客戶端成功建立了與服務(wù)器的連接之后,雙方即以進(jìn)行數(shù)據(jù)通信;

        (5)兩端分別創(chuàng)建InputStream輸入流跟Output Stream輸出流對(duì)象用于之間發(fā)送數(shù)據(jù)。

        1.2.2 Android手機(jī)移動(dòng)終端間的即時(shí)通訊(M2M)

        用戶終端的即時(shí)通訊,是基于TCP/IP協(xié)議的socket通信。在同一局域網(wǎng)下,用戶可通過(guò)APP發(fā)布的UDP全網(wǎng)廣播,將自己的IP地址及端口號(hào)信息通知給周圍的APP用戶,通過(guò)自組建立socket通信子線程,實(shí)現(xiàn)消息的傳遞及文件傳輸,圖3為其功能模塊圖。

        圖3 M2M功能模塊圖

        (1)M2M的功能實(shí)現(xiàn)過(guò)程

        實(shí)現(xiàn)Android客戶端之間的即時(shí)通訊的根本是,通過(guò)同一局域網(wǎng)下端對(duì)端的建立起通信連接??蛻舳穗p方在建立即時(shí)通訊之前,由連接的發(fā)起方主動(dòng)向接收方發(fā)起創(chuàng)建通信連接請(qǐng)求。通信雙方采用的是飛鴿傳書協(xié)議,它是基于TCP/IP協(xié)議設(shè)計(jì)的一種分支協(xié)議。

        Android客戶端之間的通信采用多線程[3]的方式。多線程實(shí)際是指實(shí)現(xiàn)多任務(wù)的一種方式。一個(gè)Java應(yīng)用總是從main()方法開始運(yùn)行,而這條默認(rèn)的生產(chǎn)線被稱為主線程。通常創(chuàng)建一個(gè)Android工程是,系統(tǒng)都會(huì)自動(dòng)生成一個(gè)MainActivity.java的文件。在這個(gè)Activity里面如果之間將代碼段寫入到OnCreate()里面,并運(yùn)行。那么這段代碼就會(huì)在主線程里面進(jìn)行執(zhí)行。由于,在Android4.0以上版本中,規(guī)定在主線程中不能進(jìn)行訪問(wèn)網(wǎng)絡(luò)相關(guān)的操作,所以必須建立子線程處理局域網(wǎng)的通信過(guò)程。需要在OnCreate()方法里面加入如下的線程聲明。

        由于M2M的socket通信建立過(guò)程與P2M的socket建立過(guò)程類似,所以此處不再進(jìn)行重復(fù)說(shuō)明。由于文件的處理時(shí)間較長(zhǎng),如果將其放入主線程中處理,很可能造成這個(gè)程序卡死,所以設(shè)計(jì)時(shí)新建了文件傳輸[4]NetTcp FileSendThread與文件發(fā)送NetTcpFileReceiveThread兩個(gè)子線程來(lái)處理。文件的傳輸都是通過(guò)TCP/IP協(xié)議進(jìn)行的,所以根據(jù)對(duì)方的IP地址與之間規(guī)定的端口號(hào)(飛鴿傳輸協(xié)議默認(rèn)port:2425)來(lái)新建一個(gè)socket,下面代碼中指出了發(fā)送文件的核心代碼。

        (2)M2M功能模塊的界面設(shè)計(jì)

        M2M局域網(wǎng)通信,類似于被大家所熟知的手機(jī)QQ,由好友列表、聊天界面、文件瀏覽界面等構(gòu)成。其中,好友列表界面是這個(gè)功能的主界面,包含兩部分,頭部跟好友列表。頭部設(shè)計(jì)包括在線用戶數(shù)等信息的顯示。好友列表主要是采用Listview,然后為其添加一個(gè)UserListviewAdapter的適配器[6]。如圖4第一個(gè)界面所示。好友列表可自動(dòng)的搜索周圍其他在線用戶發(fā)送的廣播,并由發(fā)起方自動(dòng)組建與接收方的socket通信。

        如圖4所示,聊天界面的布局類似于微信,頭部顯示對(duì)方的基本信息,消息列表也是同樣的有屬于自己的Adapter適配器,不同之處在于,由于對(duì)方的消息跟自己發(fā)的消息都要呈現(xiàn)在列表當(dāng)中,對(duì)方頭像與消息偏左放置,自己的消息跟頭像則偏右放置,所以需要設(shè)計(jì)兩個(gè)不同的Adapter分別實(shí)現(xiàn)各自的樣式。在最下方消息發(fā)送欄的最左邊,有一個(gè)加號(hào)的按鍵,用戶通過(guò)點(diǎn)擊此加號(hào)彈出文件瀏覽頁(yè)面,選定文件后進(jìn)行傳輸。

        圖4 局域網(wǎng)M2M好友列表及聊天界面

        選擇文件列表中的某一項(xiàng)文件后,當(dāng)前路徑就會(huì)在界面中顯示出來(lái),此時(shí)發(fā)送按鍵會(huì)enabled。點(diǎn)擊發(fā)送會(huì)想接收方提交發(fā)送文件請(qǐng)求,接收方檢測(cè)到文件之后,就會(huì)彈出是否確認(rèn)接收文件的對(duì)話框,對(duì)話框顯示了文件的數(shù)量、發(fā)送者的IP地址、發(fā)送者的手機(jī)型號(hào)信息。相應(yīng)的發(fā)送放的手機(jī)界面中會(huì)出現(xiàn)當(dāng)前文件的發(fā)送進(jìn)度信息,如圖5的文件瀏覽與接收。

        圖5 局域網(wǎng)M2M文件瀏覽及發(fā)送進(jìn)度與接收請(qǐng)求

        1.2.3 電腦端與手機(jī)端通信(P2M)

        P2M通信與M2M通信原理相一致。不同之處在于,電腦服務(wù)器端是通過(guò)Java代碼實(shí)現(xiàn)的界面以及程序的編寫,與Android的java代碼編寫有一些接口程序上的不同。服務(wù)器端可以自動(dòng)的捕捉到用戶端的連接與退出,以及信息發(fā)送等等。

        圖6 P2M局域網(wǎng)通信電腦端與手機(jī)端界面

        圖6中分別為Java服務(wù)器端界面與Android客戶端界面??蛻舳溯斎敕?wù)器端在顯示文本框中IP地址跟端口號(hào),進(jìn)行對(duì)服務(wù)器的連接。連接成功之前用戶無(wú)法點(diǎn)擊發(fā)送按鍵,成功連入之后發(fā)送按鍵使能,用戶可以在發(fā)送框中輸入消息與服務(wù)器進(jìn)行socket通信。

        2 軟件測(cè)試與運(yùn)行結(jié)果分析

        測(cè)試設(shè)備:兩部Android手機(jī)(android版本為4.0以上)、一臺(tái)Win7電腦、一根USB連接線、WiFi等。

        測(cè)試準(zhǔn)備:①將其中一部Android手機(jī)通過(guò)USB線連入到電腦上。②打開電腦端的Eclipse軟件,進(jìn)入Eclipse平臺(tái)的測(cè)試環(huán)境,USB將APP程序打包下載到手機(jī)測(cè)試終端并通過(guò)電腦上的LogCat以及控制臺(tái)[7]監(jiān)測(cè)到的終端運(yùn)行信息進(jìn)行如下的測(cè)試過(guò)程。

        (1)點(diǎn)擊進(jìn)入M2M功能模塊。

        ①正常進(jìn)入后,查看好友列表界面上方是否正確顯示當(dāng)前在線用戶數(shù)等信息。之后,打開另一部Android手機(jī)中的APP,同樣進(jìn)入M2M功能界面。此時(shí),查看兩部手機(jī)的在線人數(shù)是否更新為2人。

        ②如果列表用戶數(shù)沒有更新,則點(diǎn)擊刷新按鍵,判斷是否實(shí)現(xiàn)更新。

        ③點(diǎn)擊其中某個(gè)好友,查看是否正常進(jìn)入聊天界面。

        ④如果正常進(jìn)入后,兩部手機(jī)互相發(fā)送消息,進(jìn)行通信功能測(cè)試。

        ⑤在聊天界面中,點(diǎn)擊屏幕左下角的加號(hào),查看是否成功跳轉(zhuǎn)到文件瀏覽界面。

        ⑥選擇某個(gè)文件,查看是否能夠完成文件傳輸功能。

        (2)完成局域網(wǎng)M2M功能測(cè)試后,點(diǎn)擊進(jìn)入P2M界面。

        ①輸入電腦服務(wù)器顯示文本框中的IP地址跟端口號(hào),點(diǎn)擊連接,查看電腦端是否出現(xiàn)P2M通信連接成功提示。

        ②成功建立連接后,手機(jī)與電腦端互相發(fā)送消息,進(jìn)行通信功能的測(cè)試。

        (3)完成局域網(wǎng)通信功能測(cè)試。

        3 結(jié)論

        本文實(shí)現(xiàn)了基于Android平臺(tái)下無(wú)線局域網(wǎng)絡(luò)通信APP的設(shè)計(jì)與開發(fā)?;赥CP/IP和UDP/IP協(xié)議實(shí)現(xiàn)了P2M與M2M兩大局域網(wǎng)通信功能。

        本文首先對(duì)研究?jī)?nèi)容的背景與現(xiàn)狀做出了討論,隨后介紹了在技術(shù)開發(fā)與設(shè)計(jì)當(dāng)中會(huì)用到了相關(guān)知識(shí)與技術(shù)。之后重點(diǎn)就APP的詳細(xì)設(shè)計(jì)進(jìn)行了分功能的描述,包括程序編寫以及界面設(shè)計(jì)等。在最后,進(jìn)行了系統(tǒng)的測(cè)試與結(jié)果分析,達(dá)到了最初的設(shè)計(jì)預(yù)期,并確保應(yīng)用程序的可靠性與穩(wěn)定性。主要的創(chuàng)新點(diǎn)在于:

        當(dāng)多個(gè)用戶終端同處在一個(gè)局域網(wǎng)下可通過(guò)APP自動(dòng)尋找并連接周圍的其他用戶終端,實(shí)現(xiàn)多方的消息傳送或文件傳輸?;赨DP的全網(wǎng)廣播及TCP/IP協(xié)議的局域網(wǎng)通信,不僅可以智能的實(shí)現(xiàn)用戶之間自由通信,針對(duì)需要進(jìn)行登錄校園網(wǎng)等付費(fèi)熱點(diǎn)來(lái)說(shuō),還可以節(jié)省用戶的部分流量費(fèi)用。

        通過(guò)WiFi無(wú)線網(wǎng)絡(luò)與局域網(wǎng)建立連接以及基于飛鴿傳書協(xié)議,實(shí)現(xiàn)與Android客戶端之間的即時(shí)通訊,包括消息發(fā)送,文件傳輸?shù)取?/p>

        基于UDP/IP和TCP/IP協(xié)議以及UDP發(fā)送全網(wǎng)廣播等方法,進(jìn)一步實(shí)現(xiàn)局域網(wǎng)下PC端到Android客戶端的socket通信。

        猜你喜歡
        端口號(hào)服務(wù)器端局域網(wǎng)
        在Docker容器中安裝應(yīng)用程序
        基于VPN的機(jī)房局域網(wǎng)遠(yuǎn)程控制系統(tǒng)
        電子制作(2019年16期)2019-09-27 09:35:04
        淺析異步通信層的架構(gòu)在ASP.NET 程序中的應(yīng)用
        成功(2018年10期)2018-03-26 02:56:14
        基于802.1Q協(xié)議的虛擬局域網(wǎng)技術(shù)研究與實(shí)現(xiàn)
        電子制作(2017年17期)2017-12-18 06:40:48
        局域網(wǎng)性能的優(yōu)化
        電子制作(2017年8期)2017-06-05 09:36:15
        淺談以java為基礎(chǔ)的Socket通信簡(jiǎn)介及實(shí)現(xiàn)
        青春歲月(2017年5期)2017-04-20 18:34:23
        在Windows中安裝OpenVPN
        Winsock編程在《計(jì)算機(jī)網(wǎng)絡(luò)基礎(chǔ)》教學(xué)中的應(yīng)用
        基于Android系統(tǒng)的互動(dòng)展示APP的研究與設(shè)計(jì)
        網(wǎng)頁(yè)防篡改中分布式文件同步復(fù)制系統(tǒng)
        少妇中文字幕乱码亚洲影视| 一二区视频免费在线观看| 久久精品有码中文字幕1| 国产高清女主播在线观看| 国产在线视频91九色| 成人欧美日韩一区二区三区| 国产人妻精品一区二区三区| 熟妇人妻中文字幕无码老熟妇| 专区国产精品第一页| 国产福利美女小视频| 日韩不卡一区二区三区色图| 国产私人尤物无码不卡| 四虎影视免费观看高清视频| 无遮无挡三级动态图| 久久久久亚洲AV无码去区首| 麻豆三级视频网站在线观看| 国产精品偷窥熟女精品视频| 黑人大荫道bbwbbb高潮潮喷| 国产亚洲欧美在线观看的| 蜜臀aⅴ永久无码一区二区| 国产大片在线观看91| 国产免费在线观看不卡| av色综合久久天堂av色综合在| 欧妇女乱妇女乱视频| 日本精品网| 婷婷激情五月综合在线观看| 国产一区二区av在线免费观看| 亚洲成av人综合在线观看| 亚洲精华国产精华液的福利| 日本熟妇hd8ex视频| 尤物蜜桃视频一区二区三区| 乱色精品无码一区二区国产盗| 久99久热只有精品国产男同| 国产精品毛片大尺度激情| 国产黄色三级一区二区三区四区| 亚洲av无码精品国产成人| 欧美日韩国产成人高清视| 日本不卡的一区二区三区| 在线观看国产激情视频| 成 人 免 费 黄 色| 精品国产高清a毛片无毒不卡|