哈尔滨公司网站建设,做网站需要域名跟服务器吗,wordpress免费中文模板,网站开发 资质UDP透传程序
本脚本用于在 设备 A 和 设备 B 之间建立 UDP 数据转发桥梁#xff0c;适用于 A 和 B 设备无法直接通信的情况。 流程#xff1a; A -- 电脑 (中继) -- B B -- 电脑 (中继) -- A 需要修改参数#xff1a; B_IP “192.168.1.123” # 设备 B 的…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 / WindowsPython 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(fUDP 中继服务器启动监听 {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*********)