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

        ?

        基于TCP協(xié)議的Android模擬器間通信在教學(xué)中的應(yīng)用研究

        2018-12-20 08:50:46許姍姍
        關(guān)鍵詞:程序

        許姍姍

        (廈門軟件職業(yè)技術(shù)學(xué)院,福建廈門 361000)

        1 研究背景

        隨著科技的迅速發(fā)展,移動(dòng)網(wǎng)絡(luò)以及智能手機(jī)的普及讓人們的生活發(fā)生了巨大的變化。Android網(wǎng)絡(luò)開發(fā)就是實(shí)現(xiàn)不同終端之間的通信,其中一個(gè)應(yīng)用就是把復(fù)雜的數(shù)據(jù)操作運(yùn)算放在計(jì)算機(jī)終端,來實(shí)現(xiàn)手機(jī)的高功能運(yùn)行[1]。

        目前,基于TCP/IP協(xié)議的Socket通信是廣泛應(yīng)用的通信協(xié)議之一?;赥CP/IP協(xié)議的Socket通信,是通過指定IP地址和port號(hào),采用c/s模式建立TCP協(xié)議下的兩個(gè)通信進(jìn)程間的連接,實(shí)現(xiàn)可靠的雙向通信[2]。生活中越來越多的廠商會(huì)將物聯(lián)網(wǎng)技術(shù)與智能硬件組合在同一個(gè)局域網(wǎng)內(nèi),由網(wǎng)關(guān)通過指令統(tǒng)一控制智能硬件。例如,火焰報(bào)警信息傳遞、監(jiān)控點(diǎn)的智能相機(jī)等平臺(tái),就是采用高實(shí)時(shí)性的基于TCP協(xié)議的Socket通訊技術(shù),將傳感器數(shù)據(jù)實(shí)時(shí)送達(dá)。人們平常使用的網(wǎng)絡(luò)聊天程序、迅雷下載程序等都需要用到Socket通信技術(shù)。

        國(guó)內(nèi)外對(duì)于Socket的研究主要包括基于TCP/IP協(xié)議關(guān)于Socket通信程序的研究、Sokcet的網(wǎng)絡(luò)編程研究與實(shí)現(xiàn)等,現(xiàn)在已取得了較為成熟的成果[3]。但在教學(xué)中經(jīng)常遇到了以下的問題:在使用Android studio開發(fā)環(huán)境下,開發(fā)兩個(gè)APP,如果將它們各自部署到運(yùn)用Android系統(tǒng)的手機(jī)上,在同一個(gè)Wi-Fi下是可以成功通信的。但在課堂上這樣操作會(huì)比較麻煩,通常學(xué)生很少攜帶兩部手機(jī)。如果能快速地將這兩個(gè)APP發(fā)布到同一臺(tái)電腦的不同Android模擬器上進(jìn)行通信,則會(huì)既簡(jiǎn)單又高效,這是本文研究的主要思路。

        2 基于TCP協(xié)議的Socket通信機(jī)制

        TCP/IP協(xié)議為傳輸控制協(xié)議/因特網(wǎng)互聯(lián)協(xié)議,是Internet最基本的協(xié)議,也是Internet國(guó)際互聯(lián)網(wǎng)絡(luò)的基礎(chǔ),由網(wǎng)絡(luò)層的IP協(xié)議和傳輸層的TCP協(xié)議組成[4]。Socket定義了一些規(guī)范,我們只需要遵循Socket的規(guī)定去編程即可。

        Socket是應(yīng)用層與TCP/IP協(xié)議簇通訊的中間抽象層,Socket是一組接口,通常被稱作“套接字”[5]。簡(jiǎn)單來說,Socket提供了程序內(nèi)部與外界通信的端口,并為通信雙方提供了數(shù)據(jù)傳輸通道[6]。基于Sokcet的網(wǎng)絡(luò)編程的主要操作流程如下:

        2.1 套接字服務(wù)端的具體流程

        (1)調(diào)用類ServerSocket的ServerSocket(int aport)方法創(chuàng)建一個(gè)ServerSocket對(duì)象,并綁定到指定端口。(2)調(diào)用accept()方法,監(jiān)聽連接請(qǐng)求,如果客戶端請(qǐng)求連接,則接受連接,并返回一個(gè)Socket對(duì)象。(3)通過Socket對(duì)象的getInputStream()和Socket對(duì)象的getOutputStream()方法獲得輸出流和輸入流,程序開始進(jìn)入數(shù)據(jù)的接收和發(fā)送[7]。(4)關(guān)閉流、ServerSocket對(duì)象及Socket對(duì)象。

        2.2 套接字客戶端的具體流程

        (1)調(diào)用Socket(InetAddress dstAddress,int dstPort)創(chuàng)建一個(gè)Socket對(duì)象,并連接到服務(wù)器端。(2)通過Socket對(duì)象.getInputStream()和Socket對(duì)象.getOutputStream()方法獲得輸出流和輸入流,開始進(jìn)入數(shù)據(jù)的接收和發(fā)送。(3)關(guān)閉流和Socket對(duì)象。

        套接字客戶端與服務(wù)端通信的具體流程圖如1所示。

        圖1 套接字客戶端與服務(wù)端通信的流程圖

        3 模擬器間通信需要解決的問題

        計(jì)算機(jī)之間可以通過IP地址進(jìn)行通信,IP地址都是唯一的。Android模擬器提供了一個(gè)特殊的IP地址10.0.2.2,如果同一臺(tái)計(jì)算機(jī)開啟了兩個(gè)Android模擬器,那這兩個(gè)模擬器的IP是一樣的,都是10.0.2.2。而IP相同的兩臺(tái)模擬器間如何通信是我們需要解決的問題。經(jīng)過研究,通過端口重定向技術(shù),可實(shí)現(xiàn)Android模擬器之間的通信。端口重定向技術(shù)的具體操作如下:

        (1)先在“我的電腦”右鍵屬性,進(jìn)入“高級(jí)系統(tǒng)設(shè)置”,選擇“高級(jí)”選項(xiàng)卡,進(jìn)入“環(huán)境變量”,選擇系統(tǒng)變量名Path,將SDK中platform-tools所在的路徑復(fù)制粘貼進(jìn)去。如圖2所示。

        圖2 在系統(tǒng)變量Path中添加SDK的platform-tools所在路徑

        (2)啟動(dòng)兩個(gè)Android Studio自帶的模擬器,假設(shè)一個(gè)為emulator-5554,另一個(gè)為emulator-5556。將emulator-5554設(shè)定為服務(wù)器,將emulator-5556設(shè)定為客戶端。Android的模擬器有個(gè)特點(diǎn),就是程序訪問網(wǎng)絡(luò)的時(shí)候只可以從模擬器連接到外界,但是卻無法從外界連接模擬器。用戶想要從外界連接上模擬器,需要將端口重定向[8]。首先在cmd中執(zhí)行命令Telnet localhost 5554,遠(yuǎn)程登錄服務(wù)器,如果提示該命令無效,則要進(jìn)入控制面板,單擊“程序和功能”類別,打開“Windows功能”對(duì)話框,勾選“Telnet客戶端”組件,具體操作如圖3所示。

        圖3 打開Telnet客戶端

        接著重新執(zhí)行命令Telnet localhost 5554,命令行窗體提示“正在連接localhost...”,這樣就可以遠(yuǎn)程登錄服務(wù)器,出現(xiàn)一個(gè)標(biāo)題為“Telnet localhost”的窗體,如圖4所示。

        圖4 遠(yuǎn)程登錄服務(wù)器

        接下來輸入命令“help”,查看列表中是否有“redir”命令,如果沒有,則必須進(jìn)行身份認(rèn)證,方法很簡(jiǎn)單,只需通過上面窗體中的“C∶UsersAdministrator。emulator_console_auth_token”這串路徑找到對(duì)應(yīng)文件,復(fù)制文件中的字符串,通過命令“auth字符串”,就能通過認(rèn)證,如圖5所示。

        圖5 通過命令“auth字符串”進(jìn)行身份證

        最后再次輸入命令“help”,就能在列表中看到“redir”命令。輸入命令“redir add tcp∶1112∶1111”,即可完成端口重定向,如圖6所示。其中,1112是客戶端new Socket(“10.0.2.2”,1112)的端口,1111是服務(wù)端new ServerSocket(“1111”)的端口。完成這步端口重定向后,外界也可以連接上模擬器,即模擬器emulator-5556可以連接上emulator-5554了。

        圖6 使用“redir”命令進(jìn)行端口重定向

        4 模擬器間通信的具體應(yīng)用

        創(chuàng)建兩個(gè)Android應(yīng)用程序:一個(gè)作為服務(wù)端程序;一個(gè)作為客戶端程序。

        (1)服務(wù)端程序關(guān)鍵代碼如下:

        serverSocket=new ServerSocket(1111);//綁定到指定端口

        Log.i("ServerActivity","服務(wù)器啟動(dòng)了");

        socket=serverSocket.accept();//等待Socket請(qǐng)求,直到連接被打開。

        Log.i("ServerActivity","有客戶連接到服務(wù)器");

        服務(wù)端綁定到指定的端口為1111,當(dāng)用戶點(diǎn)擊按鈕、啟動(dòng)服務(wù)端后,程序執(zhí)行ServerSocket對(duì)象的accept()方法,監(jiān)聽連接請(qǐng)求,如果客戶端請(qǐng)求連接,則服務(wù)端接受連接,并返回一個(gè)Socket對(duì)象。建立連接后程序通過socket.getOutputStream()和socket.getInputStream()進(jìn)行數(shù)據(jù)的傳輸。

        (2)客戶端程序關(guān)鍵代碼如下:

        socket=new Socket("10.0.2.2",1112);//以本機(jī)另一個(gè)模擬器為服務(wù)端,則IP地址是10.0.2.2。

        客戶端綁定到指定的端口為1112,連接到本地的模擬器的IP為10.0.2.2。當(dāng)用戶點(diǎn)擊按鈕,客戶端連接上服務(wù)器后,程序就可以通過socket.getOutputStream()和socket.getInputStream()進(jìn)行數(shù)據(jù)的傳輸。

        這里需要將模擬器的端口進(jìn)行重定向,使用命令“redir add tcp∶1112∶1111”,具體用法上文有詳細(xì)說明。運(yùn)行程序,將服務(wù)端程序運(yùn)行在模擬器emulator-5554上,將客戶端程序運(yùn)行在模擬器emulator-5556上。點(diǎn)擊服務(wù)端界面的“啟動(dòng)服務(wù)端程序”按鈕,客戶端界面會(huì)顯示“服務(wù)端:我已經(jīng)啟動(dòng)了”字樣,點(diǎn)擊客戶端界面的“連接服務(wù)端程序”按鈕,服務(wù)端界面會(huì)顯示“客戶端:我已連接上你了”字樣,這時(shí)表明服務(wù)端和客戶端已連接成功,可以進(jìn)行通信了。運(yùn)行效果如圖7和圖8所示。

        圖7 服務(wù)端界面

        圖8 客戶端界面

        5 結(jié)語

        本文運(yùn)用端口重定向技術(shù)實(shí)現(xiàn)了同一臺(tái)計(jì)算機(jī)上兩個(gè)Android模擬器間的通信,通過端口重定向技術(shù)使外界也能連接上模擬器。在教學(xué)中可以直接將應(yīng)用程序部署到模擬器上進(jìn)行網(wǎng)絡(luò)通信,解決了課堂上沒有太多真機(jī)可用于測(cè)試的問題,同時(shí)還可以應(yīng)用于初創(chuàng)企業(yè)。目前運(yùn)用Android系統(tǒng)的手機(jī)機(jī)型眾多,系統(tǒng)版本多,保證應(yīng)用程序的兼容性是在應(yīng)用上架前必做的測(cè)試之一。而兼容性測(cè)試對(duì)于網(wǎng)絡(luò)開發(fā)的初創(chuàng)企業(yè)而言是一大難題,可使用本文提出的模擬器間通信的方法先進(jìn)行通信測(cè)試,再到一些網(wǎng)站上進(jìn)行兼容性測(cè)試(例如,WeTest平臺(tái)就提供了移動(dòng)端測(cè)試服務(wù))。

        猜你喜歡
        程序
        給Windows添加程序快速切換欄
        電腦愛好者(2020年6期)2020-05-26 09:27:33
        試論我國(guó)未決羈押程序的立法完善
        失能的信仰——走向衰亡的民事訴訟程序
        “程序猿”的生活什么樣
        英國(guó)與歐盟正式啟動(dòng)“離婚”程序程序
        基于VMM的程序行為異常檢測(cè)
        偵查實(shí)驗(yàn)批準(zhǔn)程序初探
        我國(guó)刑事速裁程序的構(gòu)建
        創(chuàng)衛(wèi)暗訪程序有待改進(jìn)
        恐怖犯罪刑事訴訟程序的完善
        黑人玩弄极品人妻系列视频| 香蕉视频在线观看亚洲| 揄拍成人国产精品视频| 亚洲日韩av无码一区二区三区人 | 色综合另类小说图片区| WWW拍拍拍| 欧美精品日韩一区二区三区| 亚洲AV永久无码精品表情包 | 国产91精品在线观看| 久久久久亚洲av成人片| 秋霞鲁丝片av无码| 九九热在线视频观看这里只有精品| 最新四色米奇影视777在线看| 五月婷婷激情小说| 亚洲一区二区女优av| 亚洲av一区二区三区色多多| 中文字幕日韩人妻不卡一区| 国产女在线| 极品美女高潮喷白浆视频| 日韩AV无码乱伦丝袜一区| 一区二区三区亚洲视频| 亚洲爆乳无码精品aaa片蜜桃 | 亚洲三级视频一区二区三区| 国产精品美女久久久久久| 欧美色综合高清视频在线| 亚洲成人色黄网站久久| 亚洲综合视频一区二区| 亚洲狠狠婷婷综合久久久久 | 嫩草影院未满十八岁禁止入内| 亚洲永久无码动态图| 真人与拘做受免费视频| 国产精品久久综合桃花网| 日本一区二区高清视频| 亚洲国产性夜夜综合另类| 午夜性无码专区| 国产天堂网站麻豆| 日本变态网址中国字幕| 亚洲图文一区二区三区四区| 天天做天天爱夜夜夜爽毛片 | 粉嫩国产白浆在线播放| 亚洲av无一区二区三区综合|