UDP透传程序
UDP透传程序
本脚本用于在 设备 A 和 设备 B 之间建立 UDP 数据转发桥梁,适用于 A 和 B 设备无法直接通信的情况。
流程:
A --> 电脑 (中继) --> B
B --> 电脑 (中继) --> A需要修改参数:
B_IP = “192.168.1.123” # 设备 B 的 IP
B_PORT = 37260 # 设备 B 监听的端口
RELAY_A_PORT = 37260 # 笔记本监听 A 设备的端口
- A 发送数据到 电脑 (UDP 端口 37260 )
- 电脑收到数据后,转发给 B (UDP 端口 37260 )
- B 处理后返回数据给 电脑
- 电脑收到 B 的数据后,转发给 A
系统:
- Linux / Windows
- Python 3.x
依赖库:
- socket (Python 标准库,无需额外安装)
import socket
import select
from datetime import datetime
# 设备 A 和 B 的 IP 与端口, A为上游,B为下游,改脚本为中继
# A_IP = "180.101.101.100" # 设备 A 的 IP
B_IP = "192.168.1.123" # 设备 B 的 IP
B_PORT = 37260 # 设备 B 监听的端口
# 笔记本监听 A 设备的端口
RELAY_A_PORT = 37260 # 笔记本监听 A 设备的端口
RELAY_B_PORT = 7001 # 电脑用于发送数据到 B 的端口(固定,不用临时端口)# 创建 UDP 套接字(监听 A 的数据)
sock_a = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
sock_a.bind(("0.0.0.0", RELAY_A_PORT))# 创建 UDP 套接字(用于和 B 通信,固定端口)
sock_b = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
sock_b.bind(("0.0.0.0", RELAY_B_PORT))
sock_b.connect((B_IP, B_PORT)) # 连接 B,确保发送时使用固定端口# 记录 A 设备的地址(用于返回数据)
a_address = Noneprint(f"UDP 中继服务器启动,监听 {RELAY_A_PORT} 和 {RELAY_B_PORT} ...")while True:readable, _, _ = select.select([sock_a, sock_b], [], [])for sock in readable:data, addr = sock.recvfrom(1024)hex_data = data.hex() # 转换为 hex 格式# if sock == sock_a and addr[0] == A_IP: # A 发送数据,转发给 Bif sock == sock_a:a_address = addr # 记录 A 的地址print(f"[{datetime.now().strftime('%Y-%m-%d %H:%M:%S')}] 从 A ({addr}) 收到数据: {hex_data}")sock_b.send(bytes.fromhex(hex_data)) # 直接发送(会用 `RELAY_B_PORT` 作为源端口)print(f"[{datetime.now().strftime('%Y-%m-%d %H:%M:%S')}] 数据已通过端口 {RELAY_B_PORT} 转发给 B")elif sock == sock_b and addr[0] == B_IP: # B 返回的数据,转发给 Aprint(f"[{datetime.now().strftime('%Y-%m-%d %H:%M:%S')}] 从 B ({addr}) 收到数据: {hex_data}")if a_address: # 确保 A 设备地址已记录sock_a.sendto(bytes.fromhex(hex_data), a_address) # 发送回 Aprint(f"[{datetime.now().strftime('%Y-%m-%d %H:%M:%S')}] 数据已转发给 A*********")相关文章:
UDP透传程序
UDP透传程序 本脚本用于在 设备 A 和 设备 B 之间建立 UDP 数据转发桥梁,适用于 A 和 B 设备无法直接通信的情况。 流程: A --> 电脑 (中继) --> B B --> 电脑 (中继) --> A 需要修改参数: B_IP “192.168.1.123” # 设备 B 的…...
深度学习pytorch之简单方法自定义9种卷积即插即用
本文详细解析了 PyTorch 中 torch.nn.Conv2d 的核心参数,通过代码示例演示了如何利用这一基础函数实现多种卷积操作。涵盖的卷积类型包括:标准卷积、逐点卷积(1x1 卷积)、非对称卷积(长宽不等的卷积核)、空…...
TMS320F28P550SJ9学习笔记2:Sysconfig 配置与点亮LED
今日学习使用Sysconfig 对引脚进行配置,并点亮开发板上的LED4 与LED5 我的单片机开发板平台是 LAUNCHXL_F28P55x 我是在上文描述的驱动库C2000ware官方例程example的工程基础之上进行添加功能的 该例程路径如下:D:\C2000Ware_5_04_00_00\driverlib\f28p…...
zRAM内存压缩技术:原理与实践初探
zRAM内存压缩技术:原理与实践指南 1. 技术背景与原理 zRAM是Linux内核中的一项内存压缩技术,于2014年进入Linux 3.14内核主线。它的核心思想是利用CPU压缩算法压缩内存数据,在不增加物理内存的情况下扩展系统有效内存容量。 当系统内存紧张…...
Hive 3.1 在 metastore 运行的 remote threads
Remote threads 是仅当 Hive metastore 作为单独的服务运行是启动,请求需要开启 compactor。 有以下几种: 1. AcidOpenTxnsCounterService 统计当前 open 的事务数 从表 TXNS 中统计状态为 open 的事务。此事务数量可以再 hive metrics 中。 2. Acid…...
大语言模型揭秘:从诞生到智能
引言 在人工智能飞速发展的今天,大语言模型(Large Language Models, LLMs)无疑是技术领域最耀眼的明星之一。它们不仅能够理解人类的自然语言,还能生成流畅的文本,甚至在对话、翻译、创作等任务中表现出接近人类的智能…...
基于模糊PID控制的供热控制系统设计Simulink仿真
1.模型简介 本仿真模型基于MATLAB/Simulink(版本MATLAB 2017Ra)软件。建议采用matlab2017 Ra及以上版本打开。(若需要其他版本可联系店主代为转换) 换热站干扰因素多导致传统PID控制无法满足控制要求的问题,提出利用…...
宝塔找不到php扩展swoole,服务器编译安装
1. 在php7.4中安装swoole,但找不到这个扩展安装 2. 服务器下载源码解压安装 http://pecl.php.net/package/swoole 下载4.8.0版本 解压到/www/server/php/74/下 3. 发现报错问题; 更新一下依赖 yum update yum -y install gcc gcc-c autoconf libjpe…...
LeetCode 1745.分割回文串 IV:动态规划(用III或II能直接秒)
【LetMeFly】1745.分割回文串 IV:动态规划(用III或II能直接秒) 力扣题目链接:https://leetcode.cn/problems/palindrome-partitioning-iv/ 给你一个字符串 s ,如果可以将它分割成三个 非空 回文子字符串,…...
C++发展
目录 编辑C 的发展总结:编辑 1. C 的早期发展(1979-1985) 2. C 标准化过程(1985-1998) 3. C 标准演化(2003-2011) 4. C11(2011年) 5. C14(2014年&a…...
Python:函数,return返回值与形参实参
函数: 如: def login():print("这是登陆函数") login() #调用几次,函数里面的代码就会运行几次,每次调用的时候函数都会从头开始运行 return返回值:函数执行结束后最后给调用着的一个结果 作用:…...
DeepSeek 助力 Vue3 开发:打造丝滑的表格(Table)示例2: 分页和排序
前言:哈喽,大家好,今天给大家分享一篇文章!并提供具体代码帮助大家深入理解,彻底掌握!创作不易,如果能帮助到大家或者给大家一些灵感和启发,欢迎收藏+关注哦 💕 目录 DeepSeek 助力 Vue3 开发:打造丝滑的表格(Table)示例2: 分页和排序📚前言📚页面效果📚指令…...
pandas 文本数据处理
文本数据处理 获取字符串长度: 需要用到函数:str.len() 例: # 求字符串长度 # 引用 pandas import pandas as pd # 定义数据 data {"姓名":["张三","李四","王五","赵六"],"…...
GCC RISCV 后端 -- GCC 后端框架的一些理解
GCC 已经提供了一整套的编译框架,从前端(Frontend / GENERIC-Tree)对编程语言的语法语义处理,到中端(Middle-End / GIMPLE-Tree)的目标机器无关(Target Indepndent)的优化处理&#…...
FastGPT 源码:如何实现 “问题优化“
文章目录 FastGPT 源码:如何实现 "问题优化"一、前言二、源码分析2.1 queryExtension.ts 提示词2.2 queryExtension.ts 核心逻辑2.3 queryExtension 引用位置 三、流程总结 FastGPT 源码:如何实现 “问题优化” 一、前言 问题优化的背景和目…...
CSS—flex布局、过渡transition属性、2D转换transform属性、3D转换transform属性
1.flex布局 也叫弹性布局,是浏览器提倡的布局模型,非常适合结构化布局,提供了强大的空间分布和对齐能力,不会产生浮动布局中脱标现象,布局网页更简单,更灵活。 flex容器属性: 属性描述d…...
Spring Boot Gradle 项目中使用 @Slf4j 注解
Spring Boot Gradle 项目中,如果想使用 Slf4j 注解来启用日志记录,首先需要添加 Lombok 和 SLF4J 的依赖。可以通过以下步骤来添加它们: 1. 添加 Lombok 依赖 在 build.gradle 文件中添加以下 Lombok 依赖: dependencies {impl…...
FreeRTOS系列---程序正常,但任务无法创建
实验环境 stm32F103RCT6核心板 keil5 vscode stm32cubemx 使用stm32cubemx 问题现场 void my_task_init(void) {xTaskCreate(LED1_Task, "LED1_Task", configMINIMAL_STACK_SIZE, NULL, 1, NULL);xTaskCreate(LED2_Task, "LED2_Task", configMINIMA…...
linux应用:errno、perror、open、fopen
errno errno 是一个全局变量,定义在 头文件中。当系统调用(如 open、read、write 等)或库函数执行失败时,会将一个错误码赋值给 errno。不同的错误码代表不同的错误类型,通过检查 errno 的值,可以判断具体…...
物联网中的气象监测设备具备顶级功能
物联网中的气象监测设备具备顶级功能时,通常集成GPS、数据上报和预警系统,以确保精准监测和及时响应。以下是这些功能的详细说明: 1. GPS定位 精准定位:GPS模块提供设备的精确地理位置,确保数据与具体位置关联&#…...
QMC5883L的驱动
简介 本篇文章的代码已经上传到了github上面,开源代码 作为一个电子罗盘模块,我们可以通过I2C从中获取偏航角yaw,相对于六轴陀螺仪的yaw,qmc5883l几乎不会零飘并且成本较低。 参考资料 QMC5883L磁场传感器驱动 QMC5883L磁力计…...
在 Nginx Stream 层“改写”MQTT ngx_stream_mqtt_filter_module
1、为什么要修改 CONNECT 报文? 多租户隔离:自动为接入设备追加租户前缀,后端按 ClientID 拆分队列。零代码鉴权:将入站用户名替换为 OAuth Access-Token,后端 Broker 统一校验。灰度发布:根据 IP/地理位写…...
MODBUS TCP转CANopen 技术赋能高效协同作业
在现代工业自动化领域,MODBUS TCP和CANopen两种通讯协议因其稳定性和高效性被广泛应用于各种设备和系统中。而随着科技的不断进步,这两种通讯协议也正在被逐步融合,形成了一种新型的通讯方式——开疆智能MODBUS TCP转CANopen网关KJ-TCPC-CANP…...
C++ 基础特性深度解析
目录 引言 一、命名空间(namespace) C 中的命名空间 与 C 语言的对比 二、缺省参数 C 中的缺省参数 与 C 语言的对比 三、引用(reference) C 中的引用 与 C 语言的对比 四、inline(内联函数…...
ETLCloud可能遇到的问题有哪些?常见坑位解析
数据集成平台ETLCloud,主要用于支持数据的抽取(Extract)、转换(Transform)和加载(Load)过程。提供了一个简洁直观的界面,以便用户可以在不同的数据源之间轻松地进行数据迁移和转换。…...
2025盘古石杯决赛【手机取证】
前言 第三届盘古石杯国际电子数据取证大赛决赛 最后一题没有解出来,实在找不到,希望有大佬教一下我。 还有就会议时间,我感觉不是图片时间,因为在电脑看到是其他时间用老会议系统开的会。 手机取证 1、分析鸿蒙手机检材&#x…...
使用Matplotlib创建炫酷的3D散点图:数据可视化的新维度
文章目录 基础实现代码代码解析进阶技巧1. 自定义点的大小和颜色2. 添加图例和样式美化3. 真实数据应用示例实用技巧与注意事项完整示例(带样式)应用场景在数据科学和可视化领域,三维图形能为我们提供更丰富的数据洞察。本文将手把手教你如何使用Python的Matplotlib库创建引…...
MySQL JOIN 表过多的优化思路
当 MySQL 查询涉及大量表 JOIN 时,性能会显著下降。以下是优化思路和简易实现方法: 一、核心优化思路 减少 JOIN 数量 数据冗余:添加必要的冗余字段(如订单表直接存储用户名)合并表:将频繁关联的小表合并成…...
Webpack性能优化:构建速度与体积优化策略
一、构建速度优化 1、升级Webpack和Node.js 优化效果:Webpack 4比Webpack 3构建时间降低60%-98%。原因: V8引擎优化(for of替代forEach、Map/Set替代Object)。默认使用更快的md4哈希算法。AST直接从Loa…...
多模态图像修复系统:基于深度学习的图片修复实现
多模态图像修复系统:基于深度学习的图片修复实现 1. 系统概述 本系统使用多模态大模型(Stable Diffusion Inpainting)实现图像修复功能,结合文本描述和图片输入,对指定区域进行内容修复。系统包含完整的数据处理、模型训练、推理部署流程。 import torch import numpy …...
