国产精品免费无遮挡无码永久视频-国产高潮视频在线观看-精品久久国产字幕高潮-国产精品99精品无码视亚

迅為iTOP-i.MX6ULL開發板-網絡通信-套字節UDP

發布時間:2021-6-21 11:07    發布者:落風
本章節使用的資料已經放到了開發板網盤資料中,路徑為:“11_Linux 系統開發進階\78_章節_網絡通信-套字節 UDP 使用資料”。
iTOP-IMX6ULL 實現基于 UDP 的 socket 編程。
78.1 實驗操作
UDP 是用戶數據報協議,它是一種無連接的傳輸層協議,提供面向事物的簡單不可靠信息傳送服務,所以在一些網絡質量不滿意的環境下,UDP 協議數據包丟失會比較嚴重,會造成數據的丟失。UDP 的特點是它不屬于連接型協議,所以資源消耗小。處理速度快的優點,所以通常音頻,視頻和普通數據在傳送時使用 UDP 較多,因為它們即使偶爾丟失一兩個數據包,也不會對接收結果產生太大影響。
UDP 的通信框圖如圖 78.1.1 所示

從上圖可以看到基于 UDP 通信的程序也是由服務器和客戶端組成。與 TCP 的服務器不同,UDP 的服務器不需要 listen 和 accept 函數,客戶端不需要 connect 函數。下面通過一個例子來了解一下 UDP 的應用程序,首先來看下服務器(server)端的程序。

上面的代碼和前面一章的 TCP 的服務器程序差不多,首先也是定義一些變量,然后調用
socket 函數創建一個套接字,這里 socket 函數的第二個參數是 SOCK_DGRAM,即用戶數據報,也就是創建的 UDP 連接,然后調用 bzero 函數清空變量 servaddr 的值,然后設置 servaddr 結構的值,接著調用 bind 綁定函數,然后調用 recvfrom 函數直接接收數據,而沒有調用 listen 和 accept 函數。
下面來看看客戶端(client)的程序 client.c:

客戶端(client)的程序首先是定義一些使用的變量,然后也是調用 socket 函數創建一個套接字,socket 函數的第二個參數是 SOCK_DGRAM,即用戶數據報,也就是 UDP 連接,然后調用 bzero 函數把servaddr 結構的變量清零,然后設置 servaddr 結構變量的值,然后調用 sendto 發送函數,這里客戶端程序沒有調用 bind 函數和 connect 函數。現在使用命令。
gcc -o server server.c
執行結果如圖 78.1.2:

使用命令 arm-none-linux-gnueabi-gcc -o client client.c 編譯 client.c,執行結果如圖 78.1.3。

把生成的 client 拷貝到 NFS 共享目錄中,如圖 78.1.4

然后在虛擬機 Ubuntu 上運行 server 程序,如圖 78.1.5。

在 iTOP-IMX6ULL 開發板上運行 client 程序,如圖 78.1.6。

現在看下虛擬機 Ubuntu 的 server 程序的輸出,如圖 78.1.7:

可以看到 server 程序輸出“Hello,word”,上面的打印信息就是 client 發送的數據。至此基于 UDP的 socket 通訊就實現了。


本文地址:http://www.4huy16.com/thread-769081-1-1.html     【打印本頁】

本站部分文章為轉載或網友發布,目的在于傳遞和分享信息,并不代表本網贊同其觀點和對其真實性負責;文章版權歸原作者及原出處所有,如涉及作品內容、版權和其它問題,我們將根據著作權人的要求,第一時間更正或刪除。
您需要登錄后才可以發表評論 登錄 | 立即注冊

廠商推薦

  • Microchip視頻專區
  • 常見深度學習模型介紹及應用培訓教程
  • 電動兩輪車設計生態系統
  • Microchip第22屆中國技術精英年會——采訪篇
  • “芯”光璀璨,鵬城共賞——2025 Microchip中國技術精英年會深圳站回顧
  • 貿澤電子(Mouser)專區
關于我們  -  服務條款  -  使用指南  -  站點地圖  -  友情鏈接  -  聯系我們
電子工程網 © 版權所有   京ICP備16069177號 | 京公網安備11010502021702
快速回復 返回頂部 返回列表