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

TCP、UDP 和串口通信-学习笔记

一、核心概念对比

特性TCPUDP串口通信 (Serial)
连接方式面向连接 (需三次握手)无连接点对点直连
可靠性可靠传输 (丢包重传/顺序保证)不可靠 (可能丢包乱序)物理层直连,可靠性取决于硬件
速度较慢 (有连接/确认开销)极快 (无连接开销)中速 (取决于波特率)
应用场景Web/邮件/文件传输视频流/DNS/游戏实时数据嵌入式设备/传感器/工业控制
数据边界字节流 (无消息边界)数据报文 (有明确边界)字节流 (需自定义协议)

 二、Python 实现代码

 1.TCP 通信 (可靠传输)
# ===== TCP Server =====
import socketserver = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server.bind(('0.0.0.0', 8888))
server.listen()print("TCP Server 等待连接...")
client, addr = server.accept()
print(f"客户端 {addr} 已连接")while True:data = client.recv(1024)if not data: breakprint(f"收到: {data.decode()}")client.send(b"Server Received")client.close()
server.close()# ===== TCP Client =====
import socketclient = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client.connect(('localhost', 8888))client.send(b"Hello TCP Server!")
response = client.recv(1024)
print(f"服务端响应: {response.decode()}")client.close()
2.UDP 通信 (高速传输)
# ===== UDP Server =====
import socketserver = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
server.bind(('0.0.0.0', 9999))print("UDP Server 等待数据...")
while True:data, addr = server.recvfrom(1024)print(f"收到来自 {addr} 的消息: {data.decode()}")server.sendto(b"ACK", addr)# ===== UDP Client =====
import socketclient = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
client.sendto(b"Hello UDP Server!", ('localhost', 9999))response, addr = client.recvfrom(1024)
print(f"收到响应: {response.decode()}")client.close()
3.串口通信 (设备直连)
# 首先安装:pip install pyserial# ===== 串口收发示例 =====
import serial
import time# 配置串口参数 (根据实际设备修改)
ser = serial.Serial(port='/dev/ttyUSB0',  # Windows 用 'COM3'baudrate=9600,        # 波特率bytesize=serial.EIGHTBITS,parity=serial.PARITY_NONE,stopbits=serial.STOPBITS_ONE
)try:while True:# 发送数据ser.write(b"PING\n")  print("发送: PING")# 接收数据 (带超时)if ser.in_waiting > 0:data = ser.readline().decode().strip()print(f"收到: {data}")time.sleep(1)except KeyboardInterrupt:ser.close()print("串口已关闭")

三、关键技术要点

  1. TCP粘包处理:使用消息头声明长度 或 添加特殊分隔符
    # 发送带长度的消息
    msg = b"Hello World"
    client.send(len(msg).to_bytes(4, 'big') + msg)
  2. UDP应用控制:需要自行实现超时重传/数据校验
  3. 串口协议设计
    • 常用协议:Modbus, NMEA-0183 (GPS)
    • 数据帧示例:[起始符][长度][数据][校验和][结束符]
  4. 非阻塞通信:使用setblocking(False) + select模块处理多连接

调试工具推荐

  • TCP/UDP测试:NetAssist (Windows) / nc (Linux)
  • 串口调试:Serial Port Utility (Mac/Win) / CuteCom (Linux)
  • 协议分析:Wireshark

这里是个人常用的调试工具集合

https://www.123865.com/s/2bMHvd-PL4xdhttps://www.123865.com/s/2bMHvd-PL4xd

http://www.dtcms.com/a/598484.html

相关文章:

  • 句容市建设工程管理处网站国内p2p网站建设
  • 中国建设银行河南省分行网站抚州市城乡建设局网站
  • 网站建设创业珠海市横琴建设局网站
  • 基于SpringBoot的课程管理系统【智能推荐算法+可视化统计+教师课程报名排行榜】
  • 360网站推广做商务网站需要什么资料
  • 宁波网站建设设计至诚服务wordpress 分类目录下不显示文章
  • 深入解析 IP 协议:从基础核心机制到地址管理、路由选择的全方位指南
  • 邢台网站建设03191688版面设计软件
  • mysql5.7安装教程
  • P1919 【模板】高精度乘法 | A*B Problem 升级版 (FFT)
  • 网页游戏网站开发wordpress5.0.2安装
  • 阜新市建设学校管方网站注册保险代理公司需要什么条件
  • Plant Simulation 双深位立库开发系列教程-出库操作
  • python网站开发的优势wordpress 图集
  • 广州网站设计实力乐云seowordpress token插件
  • ofo的网站用什么做的app设计大赛
  • day11(11.11)——leetcode面试经典150
  • 十八个免费的舆情网站怎么做app推广
  • 将 Docker虚拟磁盘文件ext.vhdx迁移出C盘 ,更换到D盘
  • Linux--进程间通信(2)
  • 烟台品牌网站建设求职
  • byd APP逆向(AES白盒分析)
  • QueryWrapper 与 LambdaQueryWrapper 深度解析:优劣对比、选择指南及用户表实战案例
  • 【完整源码+数据集】车牌数据集,yolov8车牌检测数据集 7811 张,汽车车牌识别数据集,智慧交通汽车车牌识别系统实战教程
  • 婚庆网站策划便捷网站建设价格
  • 视频+教程 | 三位一体:MOI 数据源 + MO 向量存储 + Dify 应用层,构建企业级 RAG
  • 侨联网站建设网站开发实训报告总结2021
  • 怎么做会员积分网站房地产开发资质
  • 智能服务管理的临界点:当AI成为ITSM的“神经中枢”
  • 太原制作网站的公司百度云服务器做asp网站