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…