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.pswp.cn/news/896940.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/896940.shtml
英文地址,請注明出處:http://en.pswp.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

在現代技術發展的浪潮中,開源項目已經成為了推動技術創新和發展的核心力量。無論是人工智能、區塊鏈、云計算,還是傳統的嵌入式開發、操作系統,開源項目都在其中扮演著至關重要的角色。它們不僅促進了技術的快速迭代,也為全球開發…