簡體   English   中英

如何使用Python捕獲UDP數據包

[英]How to capture UDP packets with Python

事實和上下文元素:
我需要捕獲從GPS設備傳來的數據(緯度,經度),對它們進行重新處理,使其適合於另一個應用程序(QGIS)。 為此,我嘗試執行基於Python的模塊(起初我認為是簡單的)。 據鯊魚分析。

Source        Destination     Protocol     length   info
192.168.0.1   225.2.5.1       UPD             136   source port : 1045  destination port:6495

我試過這個代碼在各種來源中發現,像這樣的一個

import socket
import os
UDP_IP = "225.2.5.1"
UDP_PORT = 6495
sock = socket.socket(socket.AF_INET, # Internet
                  socket.SOCK_DGRAM) # UDP
 sock.bind((UDP_IP, UDP_PORT))
while True:
 data, addr = sock.recvfrom(4096) # buffer size is 1024 bytes
 print "received message:", data
os.system("pause")

問題
這段代碼對我不起作用。控制台窗口是折疊(盡管os.system(“ pause”)還是無限期運行)。由於我不太精通python編程或聯網,因此我已經使用其他IP地址和端口。由於沒有結果,我也開始混合使用它們,最后放棄了,決定與社區分享我的問題。
目的 :
我需要能夠使用python 2.7訪問此UDP框架中包含的數據,並將其保存在變量(數據)中,以進行編程項目的下一步。
感謝您的閱讀和幫助

您應該從Windows cmd-console或powershell而不是從資源管理器啟動python程序,然后窗口保持打開狀態,並且您會看到錯誤消息。 刪除縮進錯誤和最后一行。 確保您的計算機具有給定的IP地址。 將您的套接字綁定到任何地址:

import socket
UDP_IP = "0.0.0.0"
UDP_PORT = 6495
sock = socket.socket(socket.AF_INET, # Internet
                  socket.SOCK_DGRAM) # UDP
sock.bind((UDP_IP, UDP_PORT))
while True:
    data, addr = sock.recvfrom(4096)
    print "received message:", data

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM