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*********")

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/896940.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Holtek HT82V42A深度解析:CCD/CIS信号处理的集成化解决方案

——简化图像采集系统设计的终极利器 一、HT82V42A核心参数与外设资源 HT82V42A是Holtek专为图像传感器信号处理设计的模拟前端芯片,集成CCD/CIS信号处理与LED驱动功能,关键参数如下: 参数类别规格说明信号处理通道单通道CCD/CIS模拟信号输…

详细分析KeepAlive的基本知识 并缓存路由(附Demo)

目录 前言1. 基本知识2. Demo2.1 基本2.2 拓展2.3 终极 3. 实战 前言 🤟 找工作,来万码优才:👉 #小程序://万码优才/r6rqmzDaXpYkJZF 基本知识推荐阅读:KeepAlive知识点 从实战中学习,源自实战中vue路由的…

记一次误禁用USB导致键盘鼠标失灵的修复过程

背景说明 在电脑上插入了一个USB hub,然后弹窗提示:“集线器端口上出现电涌”,点开让选择“重置”或者“关闭”,不小心点了关闭,结果这个usb口就被关了,再插任何东西都没反应,找了很多办法都恢…

小米手机如何录制屏幕?手机、电脑屏幕录制方法分享

大家最近有没有遇到想记录手机屏幕操作的情况? 比如精彩的游戏瞬间、有趣的视频教程,或者需要录制屏幕来制作演示材料。小米手机在这方面可是个好帮手,今天就来给你好好唠唠,小米手机如何录制屏幕,以及后续如何处理这…

如何将JAR交由Systemctl管理?

AI越来越火了,我们想要不被淘汰就得主动拥抱。推荐一个人工智能学习网站,通俗易懂,风趣幽默,最重要的屌图甚多,忍不住分享一下给大家。点击跳转到网站 废话不多说,进入正题。下面开始说如何使用 systemctl…

chrome Vue.js devtools 提示不支持该扩展组件,移除

可能是版本不兼容,可以重新安装,推荐网址极简插件官网_Chrome插件下载_Chrome浏览器应用商店 直接搜索vue,下载旧版,vue2、vue3都支持,上面那个最新版本试了下,vue2的肯定是不能用

【RabbitMQ】RabbitMQ的核心概念与七大工作模式

🔥个人主页: 中草药 🔥专栏:【中间件】企业级中间件剖析 在现代分布式系统和微服务架构中,消息队列(Message Queue) 是解决服务间通信、系统解耦和流量削峰的关键技术之一。而 RabbitMQ 作为一…

SQLAlchemy系列教程:理解SQLAlchemy元数据

SQLAlchemy是Python开发人员的强大ORM工具。SQLAlchemy中的元数据是对象-关系映射配置的集合,允许开发人员无缝地定义和使用数据库模式。 使用元数据 SQLAlchemy中的元数据充当各种数据库描述符(如表、列和索引)的容器。这使开发人员能够通…

MacDroid for Mac v2.3 安卓手机文件传输助手 支持M、Intel芯片 4.7K

MacDroid 是Mac毒搜集到的一款安卓手机文件传输助手,在Mac和Android设备之间传输文件。您只需要将安卓手机使用 USB 连接到 Mac 电脑上即可将安卓设备挂载为本地磁盘,就像编辑mac磁盘上的文件一样编辑安卓设备上的文件,MacDroid支持所有 Andr…

Android+SpringBoot的老年人健康饮食小程序平台

感兴趣的可以先收藏起来,还有大家在毕设选题,项目以及论文编写等相关问题都可以给我留言咨询,我会一一回复,希望帮助更多的人。 系统介绍 我将从经济、生活节奏、技术融合等方面入手,详细阐述居家养老管理模式兴起的…

【星云 Orbit • STM32F4】10. 在串口接收中断里即时解析数据头的程序框架

【星云 Orbit • STM32F4】10. 串口中断中即时解析数据头的程序开发:实现高效实时数据处理 摘要 在嵌入式开发中,串口中断处理是实现高效实时数据传输的关键技术之一。本文将详细介绍如何在STM32F407微控制器上开发一个在串口接收中断中即时解析数据头的…

数据仓库的特点

数据仓库的主要特点可以概括为:面向主题、集成性、非易失性、时变性、高性能和可扩展性、支持复杂查询和分析、分层架构以及数据质量管理。 1. 面向主题(Subject-Oriented) 数据仓库是面向主题的,而不是面向事务的。这意味着数据…

SAP MDG —— MDG on S/4HANA 2023 FPS03 创新汇总

文章目录 MDG 基于SAP S/4HANA 2023 FPS03的创新BP/C/S:消息控制BP/C/S:手工分配数据控制者MDG-F:使用S/4扩展数据校验功能生成式AI可用于协助自定义对象的数据变更/同时可总结批量变更的内容 MDG 基于SAP S/4HANA 2023 FPS03的创新 由于从S…

抽奖系统(从0-1)(上)

hu项目的开发流程介绍 1. 项目启动阶段 • 项⽬概述:介绍项⽬的背景、⽬标和预期成果。 • 团队组建:建跨职能团队,包括产品经理、UI/UX 设计师、开发⼈员、测试⼈员等。 • ⻆⾊定义:明确团队中各个⻆⾊的职责和⼯作内容。 2. 需…

vim 调整字体

vim: 在vim 面板单击右键,选择references: terminal :也是单击右键,选择references:

UniApp 使用 u-loadmore 完整步骤

文章目录 一、前期准备1. 安装 uView - UI 二、使用 u-loadmore组件1. 创建页面2. 编写页面代码模板部分(loadmore-demo.vue)样式部分脚本部分 三、要点补充1. u-loadmore 状态说明2. 数据请求优化3. 性能优化4. 兼容性问题 在 UniApp 开发中&#xff0c…

Libgdx游戏开发系列教程(3)——通过柏林噪音算法地图随机地形

在B站刷到了随机地图生成的视频,随手学习下并做下记录 注: 本篇使用javafx应用作演示,算是了解这个算法的使用,后续会再出篇libgdx生成地图的示例 说明 抛开算法实现,首先认知柏林噪音算法 一般我们想要随机数,会指定个范围,如0.0-1.0之间任意小数,而柏林算法的结果范围就是[…

LeetCode热题100JS(20/100)第四天|​41. 缺失的第一个正数​|​73. 矩阵置零​|​54. 螺旋矩阵​|​48. 旋转图像​

41. 缺失的第一个正数 题目链接:41. 缺失的第一个正数 难度:困难 刷题状态:1刷 新知识: 解题过程 思考 示例 1: 输入:nums [1,2,0] 输出:3 解释:范围 [1,2] 中的数字都在数组中…

e2studio开发RA2E1(17)---- ADC扫描多通道采样

e2studio开发RA2E1.17-- ADC扫描多通道采样 概述视频教学样品申请硬件准备参考程序源码下载ADC属性配置回调函数主程序演示结果 概述 在嵌入式系统中,ADC(模数转换器)是一个非常重要的组件,它将模拟信号转换为数字信号。为了提高…

FPGA标准库-Open Logic

在现代技术发展的浪潮中,开源项目已经成为了推动技术创新和发展的核心力量。无论是人工智能、区块链、云计算,还是传统的嵌入式开发、操作系统,开源项目都在其中扮演着至关重要的角色。它们不仅促进了技术的快速迭代,也为全球开发…