【學習K230-例程19】GT6700-TCP-Client

B站視頻


TCP

??TCP/IP(Transmission Control Protocol/Internet Protocol,傳輸控制協議/網際協議)是指能夠在多個不同網絡間實現信息傳輸的協議簇。TCP/IP 協議不僅僅指的是 TCP和 IP 兩個協議,而是指一個由 FTP、SMTP、TCP、UDP、IP 等協議構成的協議簇,只是因為在 TCP/IP 協議中 TCP 協議和 IP 協議最具代表性,所以被稱為 TCP/IP 協
議。
??TCP/IP 傳輸協議,即傳輸控制/網絡協議,也叫作網絡通訊協議。它是在網絡的使用中的最基本的通信協議。TCP/IP 傳輸協議對互聯網中各部分進行通信的標準和方法進行了規定。并且,TCP/IP 傳輸協議是保證網絡數據信息及時、完整傳輸的兩個重要的協議。TCP/IP 傳輸協議是嚴格來說是一個四層的體系結構,應用層、傳輸層、
網絡層和數據鏈路層都包含其中。
??TCP/IP 協議是 Internet 最基本的協議,其中應用層的主要協議有 Telnet、FTP、SMTP等,是用來接收來自傳輸層的數據或者按不同應用要求與方式將數據傳輸至傳輸層;傳輸層的主要協議有 UDP、TCP,是使用者使用平臺和計算機信息網內部數據結合的通道,可以實現數據傳輸與數據共享;網絡層的主要協議有 ICMP、IP、IGMP,主要負責網絡中數據包的傳送等;而網絡訪問層,也叫網路接口層或數據鏈路層,主要協議有 ARP、RARP,主要功能是提供鏈路管理錯誤檢測、對不同通信媒介有關信息細節問題進行有效處理等。
??GT6700開發板配備了以太網接口,通過網線連接電腦。K230做從機去連接主機。

代碼展示

import os, time, socket, network
from machine import Pin
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':s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)ai = socket.getaddrinfo("192.168.0.1", 8080)print("Address infos:", ai)addr = ai[0][-1]print("Connecting to:", addr)try:s.connect(addr)except Exception as e:s.close()print("Connection error:", e)returnfor i in range(10):message = "GINGKO GT6700 K230 TCP client send test {0} \r\n".format(i+1)print("Sending:", message)s.sendall(message.encode())time.sleep(0.2)s.close()print("Connection closed.")main()

代碼解讀

導入必要的庫

 import network  # 用于網絡接口操作,例如配置 IP 地址和檢查網絡狀態。  import socket   # 提供網絡通信的 Socket 接口。  import time     # 提供與時間相關的函數,比如延時(sleep)。  

配置網絡接口
根據參數配置網絡接口,流程如下:
??LAN 模式: is_lan=True,配置有線網絡接口(LAN),啟用 DHCP 以自動獲取 IP 地址,返回 IP。
??等待并檢查是否分配到有效 IP 地址,返回 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  

創建 Socket

 # 使用 IPv4(AF_INET)和 TCP(SOCK_STREAM)協議創建 Socket 對象。  s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)  

獲取服務器地址和端口

 ai = socket.getaddrinfo("172.16.0.1", 8080)    addr = ai[0][-1]  # 提取地址和端口 

連接到服務器
??嘗試連接到服務器,如果連接失敗則打印錯誤信息并關閉連接。

 try:    s.connect(addr)    print("Connected to server:", addr)    except Exception as e:    s.close()    print("Connection error:", e)    return  

發送數據

 for i in range(10):    message = "K230 TCP client send test {0} \r\n".format(i)    print("Sending:", message)    s.sendall(message.encode())    time.sleep(0.2)# 在循環中發送10條測試信息并且使用sendall方法確保每條消息完全發送

關閉 Socket

 s.close()    print("Client ends connection.")# 關閉 Socket 以釋放資源,表示客戶端結束連接。  

效果展示

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

【學習k230 - 例程19】網絡例程TCP-Client

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

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

相關文章

o2oa待辦流程和已辦流程表

在o2oa系統中每個用戶有兩種唯一標識:第一種是姓名個人釘釘ID(或者o2oa創建該用戶時設置的id)ORG_PERSON.xdistinguishedName劉準3013692136672430P第二種是姓名所在部門的釘釘id個人釘釘idORG_IDENTITY.xdistinguishedName劉準966488616_301…

QT零基礎入門教程

基礎篇第一章 QT 基礎認知1.1 什么是 QT(What)?定義:跨平臺 C 應用開發框架,不僅用于 UI 設計,還包含核心功能(如事件、網絡、數據庫)。?核心特性:?跨平臺:一套代碼支…

遠程依賴管理新范式:cpolar賦能Nexus全球協作

文章目錄 前言一. Docker安裝Nexus二. 本地訪問Nexus三. Linux安裝Cpolar四. 配置Nexus界面公網地址五. 遠程訪問 Nexus界面六. 固定Nexus公網地址七. 固定地址訪問Nexus 前言 Nexus作為一款企業級倉庫管理工具,其核心功能在于集中管理各類軟件依賴,提供…

Prompt技術深度解析:從基礎原理到前沿應用的全面指南

引言 在人工智能技術飛速發展的今天,Prompt技術(提示詞工程)已成為連接人類智慧與機器智能的重要橋梁。隨著GPT-4、Claude、Gemini等大型語言模型的廣泛應用,如何有效地與這些AI系統進行交互,已成為決定AI應用成功與否…

性能測試工具Jmeter之java.net.BindException: Address already in use

首先請參考連接:https://blog.csdn.net/weixin_46190208/article/details/115229733 。配置完注冊表后一般就能解決問題。但并未解決我的問題 注冊表的MaxUserPort,TcpTimedWaitDelay兩個參數我只能配置MaxUserPort,設置TcpTimedWaitDelay后&…

JDK 新特性

JDK 新特性引入模塊Java 9 開始引入了模塊(Module),目的是為了管理依賴。使用模塊可以按需打包 JRE 和進一步限制類的訪問權限。接口支持私有方法JAVA 9 開始,接口里可以添加私有方法,JAVA 8 對接口增加了默認方法的支…

如何高效應對網站反爬蟲策略?

現在大型網站的反爬策略越來越高明了,不僅是對IP訪問頻率、User-Agent請求頭進行異常識別,還會分析IP地址、瀏覽器指紋、JS動態加載、API逆向、行為模式等方式各種設卡,動不動跳出五花八門的驗證碼,非常難搞。 怎么應對反爬是個系…

c++ shared_ptr理解

不是一個智能指針對于一個計數器嗎?怎么變成共有資源的計數器了?你的意思是多個對象共用一個計數器?你問到了 std::shared_ptr 最核心、最精妙的設計機制!你的問題非常深刻:“不是一個智能指針對應一個計數器嗎&#x…

002 Rust環境搭建

Rust環境搭建 現在很多集成開發環境(IDE)基本上都支持Rust開發。官方公布的支持工具:https://www.rust-lang.org/zh-CN/tools 這里以Windows 10 64位系統 Visual Studio Code為例來搭建Rust開發環境。 Rust安裝 Rust 的編譯工具依賴 C 語言的編譯工具&#xff0…

【Unity進階】Unity發布PC端,隱藏并自定義默認標題欄

開發環境: Unity2019.3.16f1c1 - 個人版 Visual Studio Community 2019 Windows10 專業版 x64嘿,各位朋友們!當咱們歡歡喜喜地把項目打包成PC平臺的exe窗口程序,準備在電腦上一展游戲風采時,卻發現冒出來個Windows風格…

國產延時芯片EH3B05上電延時3秒開關機芯片方案超低功耗

EH3B05-4941-24A1延時開關芯片是一款專為低功耗電子產品設計的高效時序控制器件,其核心功能在于提供精確的多通道延時信號輸出。該芯片采用SOT23-6超小封裝,體積僅為2.9mm2.8mm1.3mm,特別適合空間受限的便攜式設備。其工作電壓范圍覆蓋2.0V至…

大數據與財務管理專業如何轉型做金融科技?

在數字經濟加速演進的今天,金融行業的邊界正在被數據與技術重新定義。傳統金融崗位正經歷深刻變革,而"金融科技"(FinTech)作為技術與金融深度融合的產物,已成為行業轉型升級的核心引擎。越來越多具備數據背景…

Windows、Linux 系統 nodejs 和 npm 版本更新及錯誤修復

一、推薦使用 nvm 工具,直接通過命令行安轉和切換各個版本 無論是 Windows 平臺,還是 Linux 平臺,都推薦使用 nvm 工具。 nvm(Node.js Version Management),是一個 nodejs 的版本管理工具。它是專門為解決…

【系列文章】Linux中的并發與競爭[03]-自旋鎖

【系列文章】Linux中的并發與競爭[03]-自旋鎖 該文章為系列文章:Linux中的并發與競爭中的第3篇 該系列的導航頁連接: 【系列文章】Linux中的并發與競爭-導航頁 文章目錄【系列文章】Linux中的并發與競爭[03]-自旋鎖一、自旋鎖二、實驗程序的編寫2.1驅動…

開始 ComfyUI 的 AI 繪圖之旅-Cosmos Predict2世界模型文生圖(全網首發,官網都沒有更新)(十三)

文章標題一、Cosmos-Predict21.Cosmos Predict2 Text2Image 工作流1.1 下載工作流文件1.2 手動模型安裝1.3 按步驟完成工作流運行本文介紹了如何在 ComfyUI 中完成 Cosmos-Predict2 文生圖的工作流 一、Cosmos-Predict2 Cosmos-Predict2 是由 NVIDIA 推出的新一代物理世界基礎模…

深度學習優化器進化史:從SGD到AdamW的原理與選擇

點擊 “AladdinEdu,同學們用得起的【H卡】算力平臺”,注冊即送-H卡級別算力,80G大顯存,按量計費,靈活彈性,頂級配置,學生更享專屬優惠。 引言:優化器——深度學習的引擎 在深度學習…

工商業屋頂分布式光伏監控系統助力園區企業錯峰有序用電

一、行業痛點與需求分析分布式光伏發電作為清潔能源的重要形式,近年來在工商業屋頂、戶用場景中快速普及。然而,其“小而散”的特性導致電網適應性、運維效率、安全管控等方面面臨顯著挑戰:1.電網適應性難題:高滲透率場景下&#…

華為初級認證培訓需要嗎?HCIA考試考什么內容?自學還是報班?

大家好,這里是G-LAB IT實驗室。 在信息技術發展日新月異的今天,華為的ICT認證逐漸成為了行業內重要的技術標桿。而HCIA(Huawei Certified ICT Associate)作為華為初級認證,對于ICT技術從業者來說,既是職業發…

元宇宙與旅游產業:沉浸式體驗重構旅行全流程

1 元宇宙重構旅游核心場景1.1 目的地體驗:從 “實地觀光” 到 “虛實融合深度探索”傳統旅游目的地體驗受限于時間、空間與物理條件,元宇宙通過 “數字孿生 超現實創作”,打造 “超越實地” 的沉浸式目的地體驗。在文化遺產體驗中&#xff0…

sqlite3移植和使用(移植到arm上)

s3c2440 方法一: 在代碼中編寫插入命令 1.復制源代碼并解壓 源代碼鏈接:SQLite Download Page 2.生成動態庫 3.將動態庫復制到根目錄下的/usr/lib/下 4.編寫一個操作文件sq_insert.c 5.編譯sq_insert.c 6.將生成的運行文件 復制到根目錄下 7.運行./s…