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

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領

文檔簡介

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

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論