本文來源電子發燒友社區,作者:劉宇瑩, 帖子地址:https://bbs.elecfans.com/jishu_2008562_1_1.html
本篇學習內容主要參考潤和官方demo
https://gitee.com/hihopeorg/HarmonyOS-IoT-Application-Development
連老師TCPdemo,連老師寫的是服務器,我這個就寫了一個客戶端
https://bbs.elecfans.com/jishu_1994928_1_1.html
包括以前在朱老師大講堂學習網絡編程相關知識,再此做個整理,感謝各位老師。
1、網絡編程的框架
應用層
網絡服務與最終用戶的一個接口。
協議有:HTTP FTP TFTP SMTP SNMP DNS TELNET HTTPS POP3 DHCP
表示層
數據的表示、安全、壓縮。(在五層模型里面已經合并到了應用層)
格式有,JPEG、ASCll、EBCDIC、加密格式等
會話層
建立、管理、終止會話。(在五層模型里面已經合并到了應用層)
對應主機進程,指本地主機與遠程主機正在進行的會話
傳輸層
定義傳輸數據的協議端口號,以及流控和差錯校驗。
協議有:TCP UDP,數據包一旦離開網卡即進入網絡傳輸層
網絡層
進行邏輯地址尋址,實現不同網絡之間的路徑選擇。
協議有:ICMP IGMP IP(IPV4 IPV6)
數據鏈路層
建立邏輯連接、進行硬件地址尋址、差錯校驗等功能。(由底層網絡定義協議)
將比特組合成字節進而組合成幀,用MAC地址訪問介質,錯誤發現但不能糾正。
物理層
建立、維護、斷開物理連接。(由底層網絡定義協議)
(以上摘自百度百科 七層模型)
2、TCP 協議
(1)工作在傳輸層,對上服務socket接口(API),對下IP層(數據鏈路層)
(2)面向鏈接,通信前必須建立鏈接,需要先3次握手,也就是先撥號,QQ聊天就不是面向鏈接的,因為可以留言,但是視頻或者打電話就必須建立鏈接
(3)TCP傳輸可靠,不拍丟包、亂序等
3、TCP協議如何保證
(1)必須先握手(三次握手建立連接,四次握手關閉連接)
(2)接收方收到數據后必應答,否則發送方會丟包重傳
(3)內容附帶校驗
(4)根據網絡帶寬來自動調節適配速率(滑動窗口技術),通俗講就是發送成功了會慢慢變快,失敗了會慢慢變慢
(5)發送方會給各分割報文編號,接收方會校驗編號,一旦順序錯誤即會重傳
以上(1)、(2)、(3)、(4)對應的是一個包內部的可靠方式 (5)是每個包之間的可靠保證。
4、socket服務器編程接口
(1)socket類似open,用來打開一個網絡連接,返回一個網絡文件描述符server_fd,之后網絡連接的操作都通過網絡文件描述符
(2)bind 把本地的IP地址和網絡文件描述符(server_fd)綁定起來
(3)listen backlog監聽隊列長度,主要看服務器的帶載能力,允許同時訪問的數量
(4)accept阻塞等待,如果返回,返回客戶端的sockaddr 和長度(sockaddr的長度),返回值為client_fd。之后和這個客戶端的讀寫都通過client_fd。
(5)send/write寫操作
(6)recv/read讀操作
(7)close會話完成后,可以執行close關閉
5、socket服務器編程接口
(1)socket類似open,用來打開一個網絡連接,返回一個網絡文件描述符server_fd,之后網絡連接的操作都通過網絡文件描述符
(2)connect 連接目標服務器
(3)send/write寫操作
(4)recv/read讀操作
(5)close會話完成后,可以執行close關閉
下面是鴻蒙tcp客戶端的demo
附上作者原項目源代碼下載,詳細見作者原帖子文章。
本篇學習內容主要參考潤和官方demo
https://gitee.com/hihopeorg/HarmonyOS-IoT-Application-Development
連老師TCPdemo,連老師寫的是服務器,我這個就寫了一個客戶端
https://bbs.elecfans.com/jishu_1994928_1_1.html
包括以前在朱老師大講堂學習網絡編程相關知識,再此做個整理,感謝各位老師。
1、網絡編程的框架
應用層
網絡服務與最終用戶的一個接口。
協議有:HTTP FTP TFTP SMTP SNMP DNS TELNET HTTPS POP3 DHCP
表示層
數據的表示、安全、壓縮。(在五層模型里面已經合并到了應用層)
格式有,JPEG、ASCll、EBCDIC、加密格式等
會話層
建立、管理、終止會話。(在五層模型里面已經合并到了應用層)
對應主機進程,指本地主機與遠程主機正在進行的會話
傳輸層
定義傳輸數據的協議端口號,以及流控和差錯校驗。
協議有:TCP UDP,數據包一旦離開網卡即進入網絡傳輸層
網絡層
進行邏輯地址尋址,實現不同網絡之間的路徑選擇。
協議有:ICMP IGMP IP(IPV4 IPV6)
數據鏈路層
建立邏輯連接、進行硬件地址尋址、差錯校驗等功能。(由底層網絡定義協議)
將比特組合成字節進而組合成幀,用MAC地址訪問介質,錯誤發現但不能糾正。
物理層
建立、維護、斷開物理連接。(由底層網絡定義協議)
(以上摘自百度百科 七層模型)
2、TCP 協議
(1)工作在傳輸層,對上服務socket接口(API),對下IP層(數據鏈路層)
(2)面向鏈接,通信前必須建立鏈接,需要先3次握手,也就是先撥號,QQ聊天就不是面向鏈接的,因為可以留言,但是視頻或者打電話就必須建立鏈接
(3)TCP傳輸可靠,不拍丟包、亂序等
3、TCP協議如何保證
(1)必須先握手(三次握手建立連接,四次握手關閉連接)
(2)接收方收到數據后必應答,否則發送方會丟包重傳
(3)內容附帶校驗
(4)根據網絡帶寬來自動調節適配速率(滑動窗口技術),通俗講就是發送成功了會慢慢變快,失敗了會慢慢變慢
(5)發送方會給各分割報文編號,接收方會校驗編號,一旦順序錯誤即會重傳
以上(1)、(2)、(3)、(4)對應的是一個包內部的可靠方式 (5)是每個包之間的可靠保證。
4、socket服務器編程接口
(1)socket類似open,用來打開一個網絡連接,返回一個網絡文件描述符server_fd,之后網絡連接的操作都通過網絡文件描述符
(2)bind 把本地的IP地址和網絡文件描述符(server_fd)綁定起來
(3)listen backlog監聽隊列長度,主要看服務器的帶載能力,允許同時訪問的數量
(4)accept阻塞等待,如果返回,返回客戶端的sockaddr 和長度(sockaddr的長度),返回值為client_fd。之后和這個客戶端的讀寫都通過client_fd。
(5)send/write寫操作
(6)recv/read讀操作
(7)close會話完成后,可以執行close關閉
5、socket服務器編程接口
(1)socket類似open,用來打開一個網絡連接,返回一個網絡文件描述符server_fd,之后網絡連接的操作都通過網絡文件描述符
(2)connect 連接目標服務器
(3)send/write寫操作
(4)recv/read讀操作
(5)close會話完成后,可以執行close關閉
下面是鴻蒙tcp客戶端的demo
附上作者原項目源代碼下載,詳細見作者原帖子文章。
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。
舉報投訴
-
wi-fi
+關注
關注
14文章
2147瀏覽量
124612 -
HarmonyOS
+關注
關注
79文章
1979瀏覽量
30274 -
HiSpark
+關注
關注
1文章
156瀏覽量
6938
發布評論請先 登錄
相關推薦
6 GHz Wi-Fi如何助力醫療保健領域實現高級AR/VR應用
7客戶端設備:Intel Wi-Fi 7 BE200 Wi-Fi CERTIFIED 6客戶端設備:Intel Wi-Fi 6E AX21
什么是socket編程 socket與tcp/ip協議的關系
基于TCP/IP協議族,這是一組用于網絡通信的協議,包括傳輸控制協議(TCP)和互聯網協議(IP)。 Socket與TCP/
w5500 作為tcp server,客戶端異常發送【RST,ACK】斷開連接問題
測試1
w5500 作為tcp server,上位機labveiw程序作為clinet,正常第二次交互結束后,客戶端發送一個【RST,ACK】報文斷開了連接;
(1)使用wireshark抓取
發表于 10-14 14:01
IR900 Wi-Fi聯網的配置過程
”接口選擇Wi-Fi接口: dot11radio1類型選擇:動態地址( DHCP)
如果Wi-Fi路由器沒有開器DHCP,請選擇類型:靜態IP,填寫IP/子網掩碼/網關/DNS服務
發表于 07-25 06:09
ESP8266如何為應用程序選擇正確的Wi-Fi模塊嗎?
連接 4 個站點
- 接入點/軟AP同時具有站點模式(使主機能夠在網絡上充當站點)
- Zeroconf DNS服務發現
- 一次打開4個TCP和UDP協議套接字 - 一次進行 4 個客戶端/服務器
發表于 07-19 16:56
AT模式建立TCP客戶端連接一直不成功是怎么回事?
=\"TCP\",\"192.168.0.111\",8080
ERROR
CLOSED
網絡調試助手軟件建立 TCP 服務端 端口號:8080
如果用8266建立服務端,網絡調試
發表于 07-18 06:42
如果ESP上的TCP客戶端與服務器斷開連接,如何啟用自動重連?
ESP - TCP 客戶端
嵌入式 Linux 服務器 - TCP 服務器
如果ESP上的TCP客戶端與服務器斷開連接,如何啟用自動重連?
發表于 07-17 06:25
Labview Tcp Server one to many client(TCP調試助手服務端)
一直想自己做一個TCP調試助手,苦于能力有限,終于簡單的功能讓我給實現了,還請大家幫忙看看,指出不足,謝謝
界面未作設計,控件簡單的放上去,有美工的同學可以幫忙做界面嗎?
有客戶端連接,ip地址
發表于 07-14 19:56
如何獲取連接的TCP客戶端的ESPCONN指針?
我幾乎閱讀了 SDK API 指南版本 1.0.1 的所有文檔
并開始了解如何添加用戶 AT 命令。
這真的很簡單,只需撥打at_cmd_array_register。
BUT!
如何獲取連接的 TCP 客戶端的 ESPCONN 指針?
發表于 07-12 14:54
STA模式下TCP客戶端異常自動斷開是什么原因呢?
兩個WIFI模塊,一個工作在AP模式作為TCP服務器,一個工作在STA模式作為TCP客戶端。TCP客戶端在串口出現打印信息pm open,t
發表于 07-09 06:30
如何同時在ESP8266上運行TCP客戶端和TCP服務?
我們是 esp8266 的長期用戶,并在該芯片上運行數千臺家庭自動化類別的現場設備。然而,一個小小的限制阻礙了我們開發一些更有趣和創新的產品。
要求:我們需要同時運行 TCP 客戶端(連接
發表于 07-08 08:26
求助,關于ESP32C3 TCP客戶端連接斷線問題求解
ESP32C3開啟AP模式做TCP服務器,手機做客戶端連接服務器;超過默認最大連接數(5)以后,即使有部分客戶端斷開了,也無法再發起連接連接不上。一定需要服務器給客戶端發送數據,確認
發表于 06-27 07:54
電腦TCP客戶端連接開發板時LWIP出現錯誤怎么解決?
開發板使用的STM32F407,UCOSII+LWIP,開發板作TCP服務器時,用電腦作TCP客戶端連接,連接數在第四個時LWIP出現錯誤:memp_malloc: out of memory in pool NETCONN。請
發表于 05-09 06:38
Wi-Fi HaLow和傳統Wi-Fi的區別
Wi-Fi HaLow和傳統Wi-Fi的區別? Wi-Fi是一種無線網絡技術,可以連接到互聯網或局域網,為用戶提供無線上網的便利。隨著科技的發展和互聯網的普及,Wi-Fi也在不斷演進和
BT Wi-Fi模式是否可以通過ModustoolBox對套件進行編程來實現?
嘗試在 ModustoolBox 中使用示例項目對套件進行編程時,我遇到了問題,因為 " 錯誤:找不到匹配的 CMSIS-DAP 設備 "。
BT Wi-Fi 模式是否可以通過 Modu
發表于 01-22 06:19
評論