版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第九章網(wǎng)絡(luò)編程目錄9.1Socket編程 9.2使用HttpURLConnection 9.3WIFI編程 9.4藍(lán)牙傳輸編程9.5WebView組件學(xué)習(xí)目標(biāo)掌握Socket通信的使用掌握HttpURLConnection通信接口的使用掌握URLConnection通信的GET、POST兩種數(shù)據(jù)提交方式了解WIFI編程了解藍(lán)牙數(shù)據(jù)傳輸編程能夠使用WebView組件瀏覽網(wǎng)頁(yè)9.1Socket編程Socket通常稱為“套接字”,用于描述IP地址和端口,是一個(gè)通信鏈的句柄。應(yīng)用程序通常通過套接字向網(wǎng)絡(luò)發(fā)出請(qǐng)求或者答應(yīng)網(wǎng)絡(luò)請(qǐng)求,它支持TCP/IP協(xié)議的網(wǎng)絡(luò)通信的基本單元。它是網(wǎng)絡(luò)通信過程中端點(diǎn)的抽象表示,包含進(jìn)行網(wǎng)絡(luò)通信的五種必須信息:連接使用的協(xié)議、本地主機(jī)的IP地址、本地進(jìn)程的協(xié)議端口、遠(yuǎn)程主機(jī)的IP地址、遠(yuǎn)程進(jìn)程的協(xié)議端口。9.1.1Socket類和ServerSocket類常用的Socket構(gòu)造方法有以下兩種:(1)Socket(Stringhost,intport):創(chuàng)建連接到指定遠(yuǎn)程主機(jī)名、遠(yuǎn)程端口的Socket對(duì)象,該構(gòu)造方法沒有指定本地地址和本地端口,默認(rèn)使用本地主機(jī)IP地址和系統(tǒng)動(dòng)態(tài)分配的端口。此外,參數(shù)host也可以使用InetAddress類型。(2)Socket(Stringhost,intport,InetAddresslocalAddr,intlocalPort):創(chuàng)建連接到指定遠(yuǎn)程主機(jī)名、遠(yuǎn)程端口的Socket,并指定本地IP地址和本地端口,適用于本金主機(jī)有多個(gè)IP地址的情況。此外,參數(shù)host也可以使用InetAddress類型。9.1.2ServerSocket類ServerSocket類常用的構(gòu)造方法如下:(1)ServerSocket(intport):創(chuàng)建綁定到指定端口的服務(wù)器套接字。參數(shù)port為指定的端口號(hào),若為零,則表示使用任何空閑端口。(2)ServerSocket(intport,intbacklog):創(chuàng)建綁定到指定端口的服務(wù)器套接字,同時(shí)指定可接受的最大連接請(qǐng)求。參數(shù)port含義同上,參數(shù)backlog表示連接請(qǐng)求隊(duì)列長(zhǎng)度。如果隊(duì)列已滿,則拒絕再達(dá)到的連接請(qǐng)求。(3)ServerSocket(intport,intbacklog,InetAddresslocalAddr):創(chuàng)建一個(gè)ServerSocket對(duì)象,指定端口、連接隊(duì)列長(zhǎng)度和IP地址,當(dāng)服務(wù)器存在多個(gè)IP地址時(shí)才允許使用localAddr參數(shù)將ServerSocket綁定到特定端口。通常使用ServerSocket類進(jìn)行網(wǎng)絡(luò)通信的具體步驟如下:(1)根據(jù)指定端口實(shí)例化一個(gè)ServerSocket對(duì)象;(2)調(diào)用ServerSocket對(duì)象的accept()方法接收客戶端發(fā)送的Socket對(duì)象;(3)調(diào)用Socket對(duì)象的getInputStream()/getOutputStream()方法建立與客戶端進(jìn)行交互的I/O流;(4)服務(wù)器與客戶端根據(jù)一定的協(xié)議進(jìn)行交互,直到關(guān)閉連接;(5)關(guān)閉服務(wù)器端的Socket。(6)回到第二步,繼續(xù)監(jiān)聽下一次客戶端發(fā)送的Socket請(qǐng)求連接。9.2.1URL類和URLConnection類9.2.2HttpURLConnection類HTTP是最常見的應(yīng)用層網(wǎng)絡(luò)協(xié)議,Internet上的大部分資源都是基于HTTP的。Java提供了.HttpURLConnection類專門用于處理HTTP的請(qǐng)求和響應(yīng)。HttpURLConnection繼承自URLConnection類,每個(gè)HttpURLConnection實(shí)例都可生成單個(gè)請(qǐng)求,以透明的共享方式連接到HTTP服務(wù)器。9.3.1WifiManager類Android系統(tǒng)提供了一個(gè)WifiManager類用于簡(jiǎn)單的Wi-Fi操作,使用WifiManager可以在應(yīng)用中打開與關(guān)閉Wi-Fi,同時(shí)還可以獲取Wi-Fi當(dāng)前的狀態(tài)信息。在Android應(yīng)用中控制Wi-Fi,主要是對(duì)WifiManager對(duì)象進(jìn)行操作。具體操作分為如下幾個(gè)步驟:(1)在AndroidManifest.xml清單文件中為應(yīng)用程序添加權(quán)限。<!--允許應(yīng)用程序改變網(wǎng)絡(luò)連接狀態(tài)--><uses-permissionandroid:name="android.permission.CHANGE_NETWORK_STATE"/><!--允許應(yīng)用程序改變WI-FI連接狀態(tài)--><uses-permissionandroid:name="android.permission.CHANGE_WIFI_STATE"/><!--允許應(yīng)用程序獲取網(wǎng)絡(luò)的狀態(tài)信息--><uses-permissionandroid:name="android.permission.ACCESS_NETWORK_STATE"/><!--允許應(yīng)用程序獲得WI-FI的狀態(tài)信息--><uses-permissionandroid:name="android.permission.ACCESS_WIFI_STATE"/>(2)得到WifiManager對(duì)象。WifiManagerwifiManager=(WifiManager)Context.getSystemService(Service.WIFI_SERVICE);其中Context為當(dāng)前Activity對(duì)象,getSystemService是Android中的一個(gè)很重要的API,它是Activity的一個(gè)方法,根據(jù)傳入的參數(shù)來獲取相應(yīng)的服務(wù)對(duì)象。(3)打開Wi-Fi網(wǎng)卡。wifiManager.setWifiEnabled(true);(4)關(guān)閉Wi-Fi網(wǎng)卡。wifiManager.setWifiEnabled(false);(5)獲取當(dāng)前Wi-Fi網(wǎng)卡狀態(tài)。wifiManager.getWifiState();9.3.2WifiInfo類該類主要用于在Wi-Fi網(wǎng)卡連通后獲取Wi-Fi的相關(guān)信息,主要包括:Mac地址、IP地址、連接速度、網(wǎng)絡(luò)信號(hào)等。WifiInfo對(duì)象的獲取主要通過調(diào)用WifiManager類的getConnectionInfo()方法得到。具體代碼如下:WifiInfowifiInfo=wifiManager.getConnectionInfo();9.4藍(lán)牙傳輸編程Android應(yīng)用程序框架提供了訪問藍(lán)牙功能的API,這些API能夠讓應(yīng)用程序無線連接其他藍(lán)牙設(shè)備,實(shí)現(xiàn)點(diǎn)對(duì)點(diǎn)或點(diǎn)對(duì)多點(diǎn)的信息交換功能。具體功能只要有:(1)掃描其它藍(lán)牙設(shè)備。(2)查詢本地藍(lán)牙適配器用于配對(duì)藍(lán)牙設(shè)備。(3)建立RFCOMM信道。(4)通過服務(wù)發(fā)現(xiàn)連接其他設(shè)備。(5)數(shù)據(jù)通信。(6)管理多個(gè)連接。9.4.1Android藍(lán)牙API介紹Android支持的藍(lán)牙開發(fā)類在android.bluetooth包中。編程主要涉及的類有BluetoothAdapter與BluetoothDevice類,這兩個(gè)類用于藍(lán)牙設(shè)備的管理;還有BluetoothServerSocket和BluetoothSocket類,這兩個(gè)類用于藍(lán)牙通信。9.4.2Android藍(lán)牙基本應(yīng)用編程(1)為了在應(yīng)用中使用藍(lán)牙功能,要在AndroidManifest.xml清單文件中聲明藍(lán)牙應(yīng)用權(quán)限。代碼如下所示。<!--聲明藍(lán)牙使用及管理權(quán)限--><uses-permissionandroid:name="android.permission.BLUETOOTH"/><uses-permissionandroid:name="android.permission.BLUETOOTH_ADMIN"/>9.4.3藍(lán)牙連接與數(shù)據(jù)傳輸有兩種方法實(shí)現(xiàn)藍(lán)牙連接,一種是每一個(gè)設(shè)備都自動(dòng)準(zhǔn)備作為一個(gè)服務(wù)器,擁有一個(gè)服務(wù)器Socket并監(jiān)聽連接,然后每個(gè)設(shè)備也都能作為客戶端建立一個(gè)到遠(yuǎn)程設(shè)備的連接。另一種是一個(gè)設(shè)備作為服務(wù)器Socket,另外一個(gè)設(shè)備僅作為客戶端建立與服務(wù)器的連接。下面是建立服務(wù)器Socket和接收連接的基本步驟:(1)通過調(diào)用listenUsingRfcommWithServiceRecord(String,UUID)方法得到一個(gè)BluetoothServerSocket對(duì)象。String參數(shù)為服務(wù)的標(biāo)識(shí)名稱,名字可以任意。當(dāng)客戶端試圖連接本設(shè)備時(shí),它將攜帶一個(gè)UUID用來唯一標(biāo)識(shí)它要連接的服務(wù),UUID必須匹配,連接才會(huì)接收。(2)通過調(diào)用BluetoothServerSocket對(duì)象的accept()方法監(jiān)聽連接請(qǐng)求。該方法為阻塞方法,直到接收一個(gè)連接或異常才會(huì)返回。當(dāng)客戶端攜帶的UUID與監(jiān)聽它的Socket注冊(cè)的UUID匹配時(shí),連接才會(huì)被接收,這時(shí)accept()方法將返回一個(gè)BluetoothSocket對(duì)象。(3)使用BluetoothServerSocket對(duì)象的close()方法釋放服務(wù)器Socket及其資源,該方法不會(huì)關(guān)閉accept()方法返回的BluetoothSocket對(duì)象。建立客戶端Socket連接到服務(wù)器的基本步驟:(1)使用BluetoothDevice調(diào)用方法createRfcommSocketToServiceRecord(UUID)獲取一個(gè)BluetoothSocket對(duì)象。(2)調(diào)用該BluetoothSocket對(duì)象的connect()方法建立連接。當(dāng)調(diào)用這個(gè)方法時(shí),系統(tǒng)會(huì)在遠(yuǎn)程設(shè)備上完成一個(gè)SDP協(xié)議的查找來匹配UUID。如果查找成功并且遠(yuǎn)程設(shè)備接收連接,就共享RFCOMM信道,connect()方法會(huì)返回。該方法也是一個(gè)阻塞調(diào)用,如果連接失敗或者超時(shí)(12s)都會(huì)拋出異常。如果兩個(gè)設(shè)備成功建立連接,各自都會(huì)有一個(gè)BluetoothSocket對(duì)象,此時(shí)就可以在設(shè)備間共享數(shù)據(jù)了。使用BluetoothSocket傳輸數(shù)據(jù)的通常方法如下:分別使用getInputStream()和getOutputStream()獲取輸入輸出流來處理傳輸。調(diào)用read(byte[])和write(byte[])來實(shí)現(xiàn)數(shù)據(jù)流的讀和寫。9.5WebView組件WebView作為瀏覽器網(wǎng)絡(luò)資源的視圖組件,具有以下幾個(gè)優(yōu)點(diǎn):功能強(qiáng)大,支持HTML、CSS和JavaScript,并很好地融入布局,使頁(yè)面更加美觀;能夠?qū)g覽器控件進(jìn)行詳細(xì)的設(shè)置,例如字體、背景顏色和滾動(dòng)條樣式等;能夠捕獲到所有瀏覽器的操作,例如單擊、打開或關(guān)閉URL。使用WebView組件的基本步驟如下:(1)在AndroidManifest.xml清單文件中配置訪問網(wǎng)絡(luò)權(quán)限;(2)在布局文件中創(chuàng)建WebView元素;(3)在代碼中加載網(wǎng)頁(yè)。在加載網(wǎng)頁(yè)內(nèi)容時(shí),除了使用WebView的loadUrl()方法進(jìn)行加載外,還可以使用loadData()或loadDataWithBaseURL()方法將HTML代碼
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度五金配件產(chǎn)業(yè)鏈金融服務(wù)平臺(tái)合作協(xié)議3篇
- 2025年度消防安全隱患排查與整改服務(wù)合同模板6篇
- 共享單車服務(wù)的市場(chǎng)分析
- 共享資源:高效利用閑置資產(chǎn)
- 農(nóng)村土地流轉(zhuǎn)與規(guī)?;?jīng)營(yíng)
- 2025年度新能源研發(fā)與市場(chǎng)推廣合作合同2篇
- 2024年示范性補(bǔ)償貿(mào)易協(xié)議條款版
- 【優(yōu)教通-同步備課】高中數(shù)學(xué)(北師大版)選修2-3教案:第3章-典例解析:回歸分析
- 2024年物權(quán)轉(zhuǎn)讓債務(wù)清償協(xié)議模板版B版
- 云南師大附中2022屆高三上學(xué)期高考適應(yīng)性月考卷(二)語文試題-掃描版含答案及雙向細(xì)目表
- 工程量清單清單計(jì)價(jià)封面
- 壓濾機(jī)產(chǎn)品質(zhì)量檢測(cè)報(bào)告
- 日產(chǎn)5000噸水泥生產(chǎn)線建筑工程施工組織設(shè)計(jì)
- 267條表情猜成語【動(dòng)畫版】
- 三戰(zhàn)課件(輿論戰(zhàn)、法律戰(zhàn)、心理戰(zhàn))
- 農(nóng)民工工資專用賬戶資金管理協(xié)議
- 統(tǒng)編版語文二年級(jí)上冊(cè) 句子練習(xí)專項(xiàng)練習(xí)題(試題)( 無答案)
- 上海市歷年中考語文現(xiàn)代文閱讀真題40篇(2003-2021)
- 產(chǎn)品拆解:飛書多維表格怎么用
- 意識(shí)障礙的診斷鑒別診斷及處理
- 客房服務(wù)員(四級(jí))考證理論考核試題及答案
評(píng)論
0/150
提交評(píng)論