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 通訊就實現了。
上一篇:迅為iTOP-i.MX6ULL開發板-網絡通信-套字節TCP
下一篇:4412開發板一鍵燒寫QT程序到開發板-安裝ssh
推薦閱讀最新更新時間:2025-06-08 05:30



設計資源 培訓 開發板 精華推薦
- AM1DR-2403SH30Z 3.3V 1 瓦 DC-DC 轉換器的典型應用
- 使用 Analog Devices 的 LTC3728LIGN 的參考設計
- 用于開/關控制應用的 AM2G-4818SZ 18V 2 瓦 DC-DC 轉換器的典型應用
- ToubanPCB
- 使用 Infineon Technologies AG 的 TDA 16846-2 的參考設計
- ADA4610-2ARZ-R7 正峰值檢波器運算放大器的典型應用電路
- LT6656ACS6-2.5、2.5V 精密電流和升壓電壓基準的典型應用
- 使用 Omron 的 S8VS-09024BS 的參考設計
- 使用具有 PowerPath 和 2A 輸入限制的 LTC4162EUFD-L41 9V 至 35V、2 節、3.2A 充電器的典型應用
- VL53L0X測距模塊