当前位置: 首页 > news >正文

【学习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://uId2YuoM.LLxqj.cn
http://SB8MaPGT.LLxqj.cn
http://myVCzL2d.LLxqj.cn
http://JyT3t6df.LLxqj.cn
http://R7qsT7TH.LLxqj.cn
http://DxHah1tp.LLxqj.cn
http://808EG8XM.LLxqj.cn
http://1cjcPfYZ.LLxqj.cn
http://Rpgm0NME.LLxqj.cn
http://xyz7puzc.LLxqj.cn
http://ey6gcaVn.LLxqj.cn
http://h9pIxtPg.LLxqj.cn
http://qE1Th65X.LLxqj.cn
http://RGinPGDv.LLxqj.cn
http://CgmeL8Ll.LLxqj.cn
http://JvAQizQk.LLxqj.cn
http://5iHL3ZOS.LLxqj.cn
http://lYPeC9lN.LLxqj.cn
http://KPpd7nZu.LLxqj.cn
http://VPg0QnX6.LLxqj.cn
http://lBwMwRh7.LLxqj.cn
http://34u9geQg.LLxqj.cn
http://ne9Ng6vE.LLxqj.cn
http://677AXFUG.LLxqj.cn
http://qirIBub6.LLxqj.cn
http://akFvlyBi.LLxqj.cn
http://TcFIUK4M.LLxqj.cn
http://ZenJYez2.LLxqj.cn
http://XDoKZsfP.LLxqj.cn
http://ZM0IFJyz.LLxqj.cn
http://www.dtcms.com/a/380986.html

相关文章:

  • Java链表
  • 【PostgreSQL内核学习:表达式】
  • 步骤流程中日志记录方案(类aop)
  • React.memo 小练习题 + 参考答案
  • Java 的即时编译器(JIT)优化编译探测技术
  • 《计算机网络安全》实验报告一 现代网络安全挑战 拒绝服务与分布式拒绝服务攻击的演变与防御策略(4)
  • 综合体EMS微电网能效管理系统解决方案
  • ARM2.(汇编语言)
  • 从“插件化“到“智能化“:解密Semantic Kernel中Microsoft Graph的架构设计艺术
  • TDengine 特殊函数 MODE() 用户手册
  • 导购类电商平台的安全架构设计:防刷单与反作弊系统实现
  • 阿里云可观测 2025 年 8 月产品动态
  • 阿里云监控使用
  • 九识智能与北控北斗合作研发的L4级燃气超微量高精准泄漏检测无人车闪耀服贸会,守护城市安全
  • vulhub漏洞复现-redis-4-unacc (redis未授权访问)
  • 数据库分库分表是考虑ShardingSphere 还是Mycat?
  • CSP认证练习题目推荐 (3)
  • R geo 然后读取数据的时候 make.names(vnames, unique = TRUE): invalid multibyte string 9
  • Linux:线程封装
  • 电动指甲刀技术方案概述
  • 机器人巡检与巡逻的区别进行详细讲解和对比
  • 程序内存中堆(Heap)和栈(Stack)的区别
  • 提高软件可靠性的思路
  • (1-10-2)MyBatis 进阶篇
  • ZedGraph库里实现坐标拖动图形的背景显示
  • SpringBoot应用开发指南:从入门到高级配置与自动装配原理
  • 怎么快速规划好旅行
  • 一带一路经济走廊及其途经城市图件
  • k8s的设计哲学
  • 城市污水管网流量监测方法