《物聯(lián)網(wǎng)應(yīng)用開(kāi)發(fā)》課件-網(wǎng)絡(luò)訪問(wèn)_第1頁(yè)
《物聯(lián)網(wǎng)應(yīng)用開(kāi)發(fā)》課件-網(wǎng)絡(luò)訪問(wèn)_第2頁(yè)
《物聯(lián)網(wǎng)應(yīng)用開(kāi)發(fā)》課件-網(wǎng)絡(luò)訪問(wèn)_第3頁(yè)
《物聯(lián)網(wǎng)應(yīng)用開(kāi)發(fā)》課件-網(wǎng)絡(luò)訪問(wèn)_第4頁(yè)
《物聯(lián)網(wǎng)應(yīng)用開(kāi)發(fā)》課件-網(wǎng)絡(luò)訪問(wèn)_第5頁(yè)
已閱讀5頁(yè),還剩22頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

網(wǎng)絡(luò)訪問(wèn)物聯(lián)網(wǎng)應(yīng)用開(kāi)發(fā)物聯(lián)網(wǎng)應(yīng)用開(kāi)發(fā)網(wǎng)絡(luò)通信基礎(chǔ)Socket通信WebSocket通信HTTP通信1234目錄1網(wǎng)絡(luò)通信基礎(chǔ)HarmonyOS為用戶提供了網(wǎng)絡(luò)連接功能,具體由網(wǎng)絡(luò)管理模塊負(fù)責(zé)。支持的三種主要的網(wǎng)絡(luò)訪問(wèn)方式:Socket網(wǎng)絡(luò)通信、WebSocket連接、HTTP數(shù)據(jù)請(qǐng)求Socket網(wǎng)絡(luò)通信:通過(guò)套接字(Socket)進(jìn)行數(shù)據(jù)通信,支持的協(xié)議包括UDP和TCP。WebSocket網(wǎng)絡(luò)通信:利用WebSocket協(xié)議創(chuàng)建服務(wù)器和客戶端之間的全雙工數(shù)據(jù)通信。HTTP數(shù)據(jù)請(qǐng)求:利用超文本傳輸協(xié)議(HTTP)向服務(wù)器發(fā)起數(shù)據(jù)傳統(tǒng)請(qǐng)求。1網(wǎng)絡(luò)通信基礎(chǔ)需要注意的是,在使用網(wǎng)絡(luò)管理模塊提供的網(wǎng)絡(luò)數(shù)據(jù)通信服務(wù)之前,用戶需要根據(jù)具體使用情況,向系統(tǒng)獲取相應(yīng)的使用權(quán)限。與網(wǎng)絡(luò)管理模塊相關(guān)的服務(wù)權(quán)限名稱及其解釋如下表。權(quán)限名說(shuō)明ohos.permission.GET_NETWORK_INFO獲取網(wǎng)絡(luò)連接信息ohos.permission.INTERNET允許程序打開(kāi)網(wǎng)絡(luò)套接字,進(jìn)行網(wǎng)絡(luò)連接1網(wǎng)絡(luò)通信基礎(chǔ)1.1Socket通信基礎(chǔ)Socket(套接字)是數(shù)據(jù)傳輸網(wǎng)絡(luò)中不同應(yīng)用進(jìn)程之間進(jìn)行數(shù)據(jù)交換的端點(diǎn)。從網(wǎng)絡(luò)協(xié)議棧的角度來(lái)看,Socket位于應(yīng)用層和傳輸層之間。處于網(wǎng)絡(luò)兩端的不同應(yīng)用層進(jìn)程,通過(guò)Socket指定對(duì)方的地址并選擇合適的傳輸層協(xié)議,最終實(shí)現(xiàn)數(shù)據(jù)通信。1網(wǎng)絡(luò)通信基礎(chǔ)1.1Socket通信基礎(chǔ)一個(gè)Socket可以用IP地址和端口號(hào)唯一確定,即Socket:=(IP地址:端口號(hào))。盡管不同表示方法使用格式不盡一致,但大多數(shù)情況下,IP地址由點(diǎn)分十進(jìn)制表示的字符串給出,端口號(hào)由整數(shù)類型數(shù)據(jù)給出。例如:給定主機(jī)IP地址為,占用端口號(hào)為49872,則可以得到一個(gè)形如(:49872)的Socket。進(jìn)行數(shù)據(jù)通信的雙方應(yīng)用層進(jìn)程通過(guò)Socket找到對(duì)方應(yīng)用層進(jìn)程實(shí)現(xiàn)數(shù)據(jù)交換。1網(wǎng)絡(luò)通信基礎(chǔ)1.1Socket通信基礎(chǔ)常用的Socket有流套接字、數(shù)據(jù)報(bào)套接字以及原始套接字等。1)流套接字使用傳輸層TCP(TransmissionControlProtocol)協(xié)議進(jìn)行數(shù)據(jù)傳輸,為用戶提供面向連接的可靠字節(jié)流傳輸服務(wù)。2)數(shù)據(jù)報(bào)套接字使用傳輸層UDP(UserDatagramProtocol)協(xié)議進(jìn)行數(shù)據(jù)傳輸,為用戶提供無(wú)連接的數(shù)據(jù)報(bào)傳輸服務(wù)。3)原始套接字能夠?qū)ξ唇?jīng)內(nèi)核處理的IP報(bào)文進(jìn)行操作,而與之相對(duì)應(yīng),流套接字或數(shù)據(jù)報(bào)套接字只能訪問(wèn)相應(yīng)協(xié)議處理后的報(bào)文(即TCP協(xié)議和UDP協(xié)議)。1網(wǎng)絡(luò)通信基礎(chǔ)1.2WebSocket通信基礎(chǔ)2011年IETF通過(guò)WebSocket通信協(xié)議,即RFC6455標(biāo)準(zhǔn),隨后又通過(guò)RFC7936文件補(bǔ)充。同時(shí),WebSocket也是W2C的標(biāo)準(zhǔn),并引入HTML5。WebSocket的協(xié)議名稱為ws。相較于HTTP,WebSocket具有以下優(yōu)點(diǎn):1)WebSocket類似于Socket通信,是一種全雙工通信技。2)WebSocket制定了二進(jìn)制幀。3)WebSocket支持用戶協(xié)議擴(kuò)展。4)WebSocket是一種狀態(tài)的協(xié)議,具有更小的通信開(kāi)銷。1網(wǎng)絡(luò)通信基礎(chǔ)1.3HTTP通信基礎(chǔ)萬(wàn)維網(wǎng)蓬勃的發(fā)展離不開(kāi)以超文本傳輸協(xié)議(HyperTextTransferProtocol,HTTP)為代表的Web協(xié)議簇的有效支撐。HTTP采用B/S(Browser/Server)架構(gòu)進(jìn)行通信,同樣也是一個(gè)應(yīng)用層協(xié)議。它基于運(yùn)輸層TCP協(xié)議傳輸數(shù)據(jù),并采用了簡(jiǎn)潔的請(qǐng)求-響應(yīng)方式進(jìn)行交互,即:客戶端根據(jù)自身需求發(fā)送相應(yīng)的請(qǐng)求至服務(wù)器,而服務(wù)器只能根據(jù)接收到的客戶端請(qǐng)求發(fā)送響應(yīng)數(shù)據(jù)。另外,HTTP協(xié)議是一種無(wú)狀態(tài)協(xié)議,不會(huì)在服務(wù)器端保留客戶端狀態(tài)。因此,HTTP的模型非常簡(jiǎn)單,便于開(kāi)發(fā)、部署。1網(wǎng)絡(luò)通信基礎(chǔ)1.3HTTP通信基礎(chǔ)HTTP采用B/S方式通信,并利用URL指定所需資源位置。雙方的通信以HTTP報(bào)文的形式進(jìn)行交互。從客戶端發(fā)送到服務(wù)器的報(bào)文稱為請(qǐng)求報(bào)文,而從服務(wù)器到客戶端的報(bào)文稱為響應(yīng)報(bào)文。請(qǐng)求報(bào)文與響應(yīng)報(bào)文的格式十分近似,它們都包括三部分:1)請(qǐng)求行(響應(yīng)報(bào)文中為狀態(tài)行):提示是何種請(qǐng)求或響應(yīng)狀態(tài)2)通用信息頭:零或多個(gè)緊挨著請(qǐng)求行/狀態(tài)行的域。3)包體:在請(qǐng)求報(bào)文中,包體中包含客戶端發(fā)送給服務(wù)器的數(shù)據(jù)。而在響應(yīng)報(bào)文中,攜帶服務(wù)器發(fā)送給客戶端的響應(yīng)數(shù)據(jù)。2Socket通信ArkTS支持Socket套接字,并支持其中的TCP和UDP兩種協(xié)議。如果要進(jìn)行Socket通信,必須導(dǎo)入@.socket模塊。在通信前,需要?jiǎng)?chuàng)建相應(yīng)的套接字實(shí)例,即TCPSocket或UDPSocket這兩個(gè)實(shí)例分別由socket.constructTCPSocketInstance方法和socket.constructUDPSocketInstance方法創(chuàng)建。2Socket通信ArkTS提供的用于管理Socekt通信主要接口如下表所示。接口名說(shuō)明constructUDPSocketInstance()創(chuàng)建一個(gè)UDPSocket對(duì)象constructTCPSocketInstance()創(chuàng)建一個(gè)TCPSocket對(duì)象bind()綁定IP地址和端口send()發(fā)送數(shù)據(jù)close()關(guān)閉連接getState()獲取Socket狀態(tài)connect()連接到指定的IP地址和端口(僅TCP支持)getRemoteAddress()獲取對(duì)端Socket地址(僅TCP支持,需要先調(diào)用connect方法)2Socket通信注意:可以使用Socket的on方法和off方法來(lái)訂閱或取消事件例如onon(type:'message')用來(lái)訂閱消息事件,即接收對(duì)方發(fā)送來(lái)消息;用off(type:'message')取消對(duì)消息事件的訂閱??梢杂嗛喕蛉∠氖录幸韵聨追N:message,close,error,listen,connect2Socket通信TCPSocket通信流程大致如下:1)導(dǎo)入ArkTSSocket通信模塊,即@.socket;2)使用socket.constructTCPSocketInstance方法創(chuàng)建TCPSocket實(shí)例;3)根據(jù)需要,利用TCPSocket實(shí)例中的on方法訂閱TCP通信相關(guān)事件信息;4)采用bind方法,為TCPSocket綁定通信監(jiān)聽(tīng)I(yíng)P地址和端口,因?yàn)橐苿?dòng)端一般為客戶,所以端口可以不明確指定由系統(tǒng)分派;5)采用connect方法,向目的Socket主動(dòng)發(fā)起連接建立;6)連接建立后,采用send方法發(fā)送數(shù)據(jù);7)通信完畢后,采用close方法斷開(kāi)TCP連接。2Socket通信下面為一個(gè)采用TCPSocket通信的實(shí)例代碼框架:importsocketfrom‘@.socket‘//導(dǎo)入模塊lettcp=socket.constructTCPSocketInstance();//生成實(shí)例tcp.on(‘xxxx’,data=>{})//訂閱相關(guān)事件letbindAddr={address:‘xx’,port:xx,family:xx};letconAddr={address:'xx',port:xx,family:xx};tcp.bind(bindAddr)//綁定地址tcp.connect(conAddr)//連接3WebSocket通信WebSocket為應(yīng)用層通信協(xié)議。WebSocket通過(guò)TCP協(xié)議進(jìn)行數(shù)據(jù)交互。相較于HTTP,WebSocket是一種有狀態(tài)的全雙工通信方式。開(kāi)發(fā)中,要進(jìn)行WebSocket通信,首先要導(dǎo)入.webSocket模塊然后調(diào)用createWebSocket方法生成WebSocket通信類實(shí)例3WebSocket通信與Socket通信類使用過(guò)程大致類似,生成WebSocket實(shí)例后,先調(diào)用connect方法建立通信雙方的全雙工連接。需要注意,用戶需要通過(guò)on方法訂閱open事件,才能接收到connect成功建立連接的消息。當(dāng)用戶得知連接成功建立后,就可以通過(guò)send方法發(fā)送數(shù)據(jù)給對(duì)方,或通過(guò)on方法訂閱message事件,接收對(duì)方發(fā)來(lái)的數(shù)據(jù)。通信結(jié)束后,用戶需使用close方法主動(dòng)關(guān)閉連接。同樣,close方法成功關(guān)閉的消息將通過(guò)on方法訂閱close事件來(lái)獲取。另外,WebSocket在通信過(guò)程中發(fā)生的任何錯(cuò)誤信息,都將通過(guò)on方法訂閱error事件來(lái)獲取。3WebSocket通信WebSocket通信模塊在庫(kù)@.webSocket中實(shí)現(xiàn),主要接口及其功能如表所示。需要注意的是,若要使用該庫(kù),需要申請(qǐng)ohos.permission.INTERNET權(quán)限。接口名說(shuō)明createWebSocket()創(chuàng)建一個(gè)WebSocket連接connect()根據(jù)URL地址,建立一個(gè)WebSocket連接send()通過(guò)WebSocket連接發(fā)送數(shù)據(jù)close()關(guān)閉WebSocket連接3WebSocket通信采用ArkTS進(jìn)行WebSocket開(kāi)發(fā)的基本流程如下:1)首先要導(dǎo)入@.webSocket模塊;2)調(diào)用createWebSocket方法創(chuàng)建WebSocket通信類實(shí)例;3)通過(guò)WebSocket實(shí)例的on方法訂閱所需事件,諸如“connect”,“close”,“error”等;4)通過(guò)connect方法建立與給定URL地址之間的連接;5)數(shù)據(jù)交互完畢后,調(diào)用close方法主動(dòng)關(guān)閉WebSocket連接。3WebSocket通信在ArkTS中進(jìn)行WebSocket通信框架示例如下importwebSocketfrom‘@.webSocket’;//引入庫(kù)varurl=“xx://xxx”;//定義URLletwebsocket=webSocket.createWebSocket();//生成實(shí)例letopen_callback=;//定義open事件回調(diào)函數(shù)websocket.on(‘open’,open_callback);//訂閱open事件letmsg_callback//定義message事件回調(diào)函數(shù)websocket.on(‘message’,msg_callback);//訂閱message事件letconnect_callback//定義connect事件函數(shù)websocket.connect(url,connect_callback);//連接指定URL.4HTTP通信HTTP為應(yīng)用層協(xié)議,通過(guò)運(yùn)輸層的TCP協(xié)議建立連接、傳輸數(shù)據(jù)。HTTP采用B/S方式通信,通信數(shù)據(jù)以報(bào)文的形式進(jìn)行傳輸。HTTP的一次事務(wù)包括一個(gè)請(qǐng)求報(bào)文和一個(gè)響應(yīng)報(bào)文。要使用ArkTS中的HTTP通信,需要導(dǎo)入@.http模塊,并調(diào)用createHttp方法創(chuàng)建一個(gè)HTTP通信類實(shí)例,即該方法會(huì)返回一個(gè)HttpRequest對(duì)象實(shí)例。注意,每個(gè)HttpRequest實(shí)例對(duì)應(yīng)一個(gè)HTTP請(qǐng)求,如果要發(fā)起多個(gè)HTTP請(qǐng)求,需要為每個(gè)HTTP請(qǐng)求生成一個(gè)HttpRequest實(shí)例。另外,要使用HTTP通信,需要獲得ohos.permission.INTERNET權(quán)限。4HTTP通信模塊http中常用的接口說(shuō)明如下表所示接口名說(shuō)明createHttp()創(chuàng)建一個(gè)http請(qǐng)求request()根據(jù)URL地址,發(fā)起HTTP網(wǎng)絡(luò)請(qǐng)求destroy()中斷請(qǐng)求任務(wù)on(type:'headersReceive')訂閱HTTPResponseHeader事件off(type:'headersReceive')取消訂閱HTTPResponseHeader事件4HTTP通信基于ArkTS開(kāi)發(fā)HTTP通信開(kāi)發(fā)的基本流程如下:1)導(dǎo)入@.http模塊;2)調(diào)用createHttp方法創(chuàng)建一個(gè)HTTP通信類實(shí)例;3)根據(jù)需要,通過(guò)on方法訂閱響應(yīng)頭時(shí)間;4)調(diào)用request方法向用戶輸入U(xiǎn)RL發(fā)起一個(gè)HTTP請(qǐng)求報(bào)文;5)根據(jù)需要,處理通信對(duì)方的HTTP響應(yīng)報(bào)文。4HTTP通信基于ArkTS的HTTP通信架構(gòu)示例代碼如下:importhttpfrom‘@.http’;//引入庫(kù)lethttpRequest=http.cre

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論