【學習K230-例程21】GT6700-UDP-Client

B站視頻


UDP 簡介

??UDP 是 User Datagram Protocol 的簡稱,中文名是用戶數據報協議,是 OSI(Open SystemInterconnection,開放式系統互聯)參考模型中一種無連接的傳輸層協議,提供面向事務的簡單不可靠信息傳送服務,IETF RFC 768 是 UDP 的正式規范。UDP 在 IP 報文的協議號是17。
??UDP 協議與 TCP 協議一樣用于處理數據包,在 OSI 模型中,兩者都位于傳輸層,處于IP 協議的上一層。UDP 有不提供數據包分組、組裝和不能對數據包進行排序的缺點,也就是說,當報文發送之后,是無法得知其是否安全完整到達的。UDP 用來支持那些需要在計算機之間傳輸數據的網絡應用。包括網絡視頻會議系統在內的眾多的客戶/服務器模式的網絡應用都需要使用 UDP 協議。UDP 協議從問世至今已經被使用了很多年,雖然其最初的光彩已經被一些類似協議所掩蓋,但即使在今天 UDP 仍然不失為一項非常實用和可行的網絡傳輸層協議。
??許多應用只支持 UDP,如:多媒體數據流,不產生任何額外的數據,即使知道有破壞的包也不進行重發。當強調傳輸性能而不是傳輸的完整性時,如:音頻和多媒體應用,UDP是最好的選擇。在數據傳輸時間很短,以至于此前的連接過程成為整個流量主體的情況下,UDP 也是一個好的選擇。
??UDP 是 OSI 參考模型中一種無連接的傳輸層協議,它主要用于不要求分組順序到達的傳輸中,分組傳輸順序的檢查與排序由應用層完成,提供面向事務的簡單不可靠信息傳送服務。UDP 協議基本上是 IP 協議與上層協議的接口。UDP 協議適用端口分別運行在同一臺設備上的多個應用程序。
??UDP 提供了無連接通信,且不對傳送數據包進行可靠性保證,適合于一次傳輸少量數據,UDP 傳輸的可靠性由應用層負責。常用的 UDP 端口號有:53(DNS)、69(TFTP)、161(SNMP),使用 UDP 協議包括:TFTP、SNMP、NFS、DNS、BOOTP。
??UDP 報文沒有可靠性保證、順序保證和流量控制字段等,可靠性較差。但是正因為 UDP協議的控制選項較少,在數據傳輸過程中延遲小、數據傳輸效率高,適合對可靠性要求不高的應用程序,或者可以保障可靠性的應用程序,如 DNS、TFTP、SNMP 等。

代碼展示

from machine import Pin                 #導入Pin模塊
import time, os, socket, network        #導入time, os, socket, network模塊def network_connect(connect=True):LAN_LED=Pin(53, Pin.OUT)            #初始化聯網指示燈if connect:LAN_LED.value(1)                #LED燈點亮else:for i in range(3):LAN_LED.value(1)time.sleep_ms(300)LAN_LED.value(0)time.sleep_ms(300)
# 執行以太網連接函數
def network_use_lan(is_lan=True):if is_lan:lan = network.LAN()if lan.active():print('network information:', lan.ifconfig())# 串口打印信息lan.ifconfig(('192.168.0.4', '255.255.255.0', '192.168.0.1', '8.8.8.8'))# 設定IP和DNSlan.ifconfig("dhcp")    #設置DHCP模式print(lan.config("mac"))#查看網口mac地址print(lan.ifconfig())   #查看網口 ip,掩碼,網關,dns配置network_connect(True)   #連接成功,點亮LEDip = lan.ifconfig()[0]else:network_connect(False)      #連接失敗,LED閃爍三次ip = '0.0.0.0'raise RuntimeError("LAN 未激活")else:print("WIFI 請等待更新")ip = '0.0.0.0'network_connect(False)          #連接失敗,LED閃爍三次return ipdef main():ip=network_use_lan(True)                                # 獲取 IP 地址if not ip=='0.0.0.0':network_use_lan(True)                               # 配置網絡接口ai = socket.getaddrinfo('192.168.0.1', 8080)        # 獲取服務器地址和端口號print("Address infos:", ai)addr = ai[0][-1]print("Connect address:", addr)s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)# 創建 UDP 套接字for i in range(10):message = "GINGKO K230 UDP client send test {0} \r\n".format(i+1)print("Sending:", message)bytes_sent = s.sendto(message.encode(), addr)   # 發送字符串print("Bytes sent:", bytes_sent)time.sleep(0.2)s.close()# 關閉套接字print("Client ended.")main()

代碼解讀

導入必要庫

 import socket   # 庫負責創建網絡通信的套接字  import network  # 庫用于配置網絡接口,比如啟用 LAN 或 WLAN。  import time     # 庫提供延時操作,通常用于控制數據發送頻率或超時處理。  

配置網絡接口
??這個函數根據是否選擇無線網絡(WLAN)或有線網絡(LAN)來配置網絡接口,具體步驟如下:
????LAN 模式:激活 LAN 接口,并使用 DHCP 模式獲取 IP 地址。

# 執行以太網連接函數  
def network_use_lan(is_lan=True):  if is_lan:  lan = network.LAN()  if lan.active():  # 串口打印信息  print('network information:', lan.ifconfig())  lan.ifconfig(('192.168.0.4', '255.255.255.0', '192.168.0.1', '8.8.8.8'))# 設定IP和DNS  lan.ifconfig("dhcp")# 設置DHCP模式  print(lan.config("mac"))# 查看網口mac地址  print(lan.ifconfig())# 查看網口 ip,掩碼,網關,dns配置  network_connect(True)# 連接成功,點亮LED  ip = lan.ifconfig()[0]  else:  network_connect(False)# 連接失敗,LED閃爍三次  ip = '0.0.0.0'  raise RuntimeError("LAN 未激活")  else:  print("WIFI 請等待更新")  ip = '0.0.0.0'  network_connect(False)# 連接失敗,LED閃爍三次  return ip  

創建 UDP 套接字
??這里通過 socket.getaddrinfo 獲取服務器的 IP 和端口信息,并提取出地址和端口號,然后創建 UDP 套接字。

 # 獲取服務器的 IP 和端口號    ai = socket.getaddrinfo('192.168.0.1', 8080)  print("Address infos:", ai)    addr = ai[0][-1]  # 提取 IP 和端口號  print("Connecting to address:", addr)  # 創建 UDP 套接字  s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)  

發送數據
??在循環中,程序生成測試消息,并將其通過 sendto 函數發送到指定的服務器地址。消息在發送之前需要轉換成字節串。發送成功后,打印已發送的字節數,并設置一個小的延時。

 # 發送測試消息  for i in range(10):  message = "GINGKO K230 UDP client send test {0} \r\n".format(i+1)  print("Sending:", message)  # 發送字符串  bytes_sent = s.sendto(message.encode(), addr)  print("Bytes sent:", bytes_sent)  time.sleep(0.2)  

關閉套接字

 # 關閉套接字  s.close()  print("Client ended.")# 在數據發送完成后,關閉套接字以釋放資源。

效果展示

配置好后,我們通過Win+R輸入cmd。在命令符里輸入ipconfig,查看我們PC與K230連接的網線IP。
在這里插入圖片描述
這個IP就是我們PC的IP。如果PC的IP或者端口號如果更改,請在代碼中也對應更改。
在這里插入圖片描述
我們將K230的IP配置到與PC同一子網下。
在這里插入圖片描述
最后我們將PC端的防火墻關閉,開啟防火墻可能會傳輸信息失敗。
在這里插入圖片描述
準備好上述工作后,我們就可以打開我們的網絡助手,選擇UDP,選擇本地主機IP和端口號,點擊打開。隨后我們運行K230代碼,連接成功后,將會通過網絡發送十條數據。
在這里插入圖片描述

【學習k230 - 例程21】網絡例程UDP

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/100259.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/100259.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/100259.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

LazyLLM教程 | 第9講:微調實踐:讓大模型和向量模型更懂你的領域

前面教程中,我們通過優化檢索策略、召回重排略以及基于大模型的查詢重寫策略來提升了RAG系統的檢索精度,但最終回復的結果還需要經過大模型的融合和處理,模型能力的強弱直接影響到最終的結果。這就好比一道好的菜不僅需要有高質量的食材&…

六、vue3后臺項目系列——頁面自適應設計+pinia,vuex的使用

前言:在頁面加入自適應是提高用戶體驗的一種形式,甚至有時候是手機用戶,我們就需要做一個自適應處理,其中肯定會涉及一些狀態條件的判斷,而這些關鍵的條件就是我們用來切換樣式的關鍵,所以我們需要使用狀態…

視頻講解|Python用ResNet殘差神經網絡在大腦出血CT圖像描數據預測應用

全文鏈接:https://tecdat.cn/?p43843 原文出處:拓端抖音號拓端tecdat 分析師:Zikun Zhang 視頻講解Python用ResNet殘差神經網絡在大腦出血CT圖像描數據預測在臨床醫療影像診斷中,大腦出血的快速準確識別直接關系到患者的救治效率…

Mysql中有那些鎖

按照鎖的力度分:1.行級鎖2.表級鎖3.全局鎖4.頁級鎖innodb不支持頁鎖全局鎖全局鎖指的是對整個數據庫實例加鎖,一般用于數據庫的表級鎖表鎖 是對整張表進行加鎖。表級鎖還有以下幾種:意向鎖:意向鎖是指,我們在事務請求表…

基于 CoT 思維鏈協調多 MCP 工具:依托亞馬遜云科技服務打造全流程智能的 Amazon Redshift 運維體系

基于 CoT 思維鏈協調多 MCP 工具:依托亞馬遜云科技服務打造全流程智能的 Amazon Redshift 運維體系 新用戶可獲得高達 200 美元的服務抵扣金 亞馬遜云科技新用戶可以免費使用亞馬遜云科技免費套餐(Amazon Free Tier)。注冊即可獲得 100 美元的…

手機群控平臺的智能管控技術深度解析

手機群控平臺作為數字化運營的核心工具,正在重塑移動設備管理的技術邊界。其核心價值在于通過集中化控制實現批量化操作,同時借助智能化算法提升管控效率。本文將深入探討其技術架構與實現方案。平臺架構與核心技術手機群控平臺采用分布式架構設計&#…

Spring Boot 生命周期與核心擴展點全解析(含實操案例)

在Spring Boot開發中,理解應用的生命周期是實現優雅啟動、資源管理與故障處理的關鍵。不同于傳統Spring框架需要繁瑣的XML配置,Spring Boot通過自動配置簡化了開發流程,但其生命周期的底層邏輯仍延續并增強了Spring的核心機制。本文將從“生命周期階段劃分”“核心擴展點原理…

69-SQLite應用

1. SQLite操作 1.1了解數據庫1.2 操作數據庫步驟# -*- coding: utf-8 -*- """ Project : 01-python-learn File : 03_SQLite3添加數據.py IDE : PyCharm Author : 劉慶東 Date : 2025/9/15 14:05 """ # 1. 導入模塊 import sqlite3 …

Nginx - 正向vs反向代理

參考: https://blog.csdn.net/william_n/article/details/127387009 AI問答?? Nginx 正向代理 vs 反向代理詳解?? ??1. 正向代理(Forward Proxy)?? ??定義?? ??客戶端主動配置??的代理服務器,代表客戶端向外部服務器發送請…

裝飾器模式在Spring中的案例

設計模式-裝飾器模式 裝飾器模式所解決的問題是,在不改變原來方法代碼的情況下對方法進行修飾,從而豐富方法功能。 Spring架構中的裝飾器模式 在Spring架構中,以線程池進行舉例。 線程池 線程池是一個對線程集中管理的對象,集中管…

云原生與 AI 驅動下的數據工程新圖景——解讀 DZone 2025 數據工程趨勢報告【附報告下載】

在 AI 技術從“實驗性”走向“企業級落地”的關鍵階段,數據工程作為底層支撐的重要性愈發凸顯。近日,DZone 發布的《2025 數據工程趨勢報告》(Scaling Intelligence with the Modern Data Stack)通過對全球 123 位 IT 專業人士的調…

9.5 機器翻譯與數據集

語言模型是自然語言處理的關鍵,而機器翻譯是語言模型最成功的基準測試,因為機器翻譯正是將輸入序列轉換成輸出序列的序列轉換模型的核心問題。序列轉碼模型在各類現代人工智能應用中國呢發揮著至關重要的作用,因此我們將其作為本章剩余部分和…

Linux 內核鏡像與啟動組件全解析:從 vmlinux 到 extlinux.conf

🧠 Linux 內核鏡像與啟動組件全解析:從 vmlinux 到 extlinux.conf 在嵌入式 Linux 系統中,啟動流程涉及多個關鍵文件和機制。不同的鏡像格式和配置文件承擔著不同的職責,從內核編譯到 bootloader 加載,再到系統啟動。本…

【系統分析師】2024年下半年真題:論文及解題思路

更多內容請見: 備考系統分析師-專欄介紹和目錄 文章目錄 試題一:論devops在企業信息系統開發中的應用 試題二:論系統業務流程分析方法及應用 試題三:論軟件測試方法及應用 試題四:論信息系統運維管理 試題一:論devops在企業信息系統開發中的應用 1、概要敘述你參與管理和…

AI GEO 實戰:借百度文小言優化,讓企業名稱成搜索熱詞

在當今數字化浪潮中,企業的線上曝光度和搜索可見性至關重要。百度作為國內占據主導地位的搜索引擎,其推出的大模型文小言蘊含著巨大的潛力。通過巧妙運用 AI GEO(生成式引擎優化)策略,企業完全有可能讓自己的公司名稱成…

文件操作知識點總結

目錄 1.為什么使用文件 2.什么是文件? 2.1 程序文件 2.2 數據文件 2.3 文件名 3.二進制文件和文本文件 4.文件的打開和關閉 4.1 流和標準流 4.1.1 流 4.1.2 標準流 4.2 文件指針 4.3 文件的打開和關閉 4.3.1 fopen函數 4.3.2 fclose函數 5.文件的順序…

oracle認證有哪幾種?如何選擇

Oracle(甲骨文)不僅是全球領先的數據庫軟件巨頭,更是企業級數據管理的代名詞,獲得Oracle認證,證明可從事Oracle數據庫服務器的數據操作和管理等工作。下面給大家詳細其主要認證類型及其在職業發展中的含金量&#xff0…

AppTest邀請測試測試流程

相比AppGallery邀請測試,AppTest邀請測試具備以下全新能力:若您同時發布了多個測試版本,AppTest支持測試版本自動升級到最新的測試版本。您可以選擇將當前最新在架版本的應用介紹截圖展示給測試人員,視覺效果更好,提升…

硬件 - oring多電源切換

目錄 一、ORing電路 1.1 ORING 電路 1.2 ORING 電路關鍵部分 二、多電源切換 2.1 主要思路 2.2 適用場景 一、ORing電路 1.1 ORING 電路 中文常稱 “或環電路” 或 “并聯冗余電路”是一種電源并聯冗余拓撲結構 核心功能:將多路獨立電源的輸出 “并聯整合”&a…

Qt多語言翻譯實戰指南:常見陷阱與動態切換解決方案

問題背景 在Qt項目國際化過程中,開發者經常會遇到各種翻譯邏輯問題,特別是需要實現運行時語言動態切換功能時。一個典型場景是:程序默認英文顯示,加載中文翻譯文件后界面變為中文,但再次切換回英文時卻失敗。本文將深入…