簡體   English   中英

通過python發送UDP包沒有得到響應

[英]Send UDP package via python not getting response

我有一個安全攝像頭,它通過 UDP 端口 37810 接收任何數據並以 JSON 響應。 攝像頭ip為192.168.1.100

echo 'a' |nc -u  192.168.1.100 37810 

回復:

DHIP??{"mac":"18:0d:2c:d1:a2:29","method":"client.notifyDevInfo","params":{"deviceInfo":{"AlarmInputChannels":0,"AlarmOutputChannels":0,"DeviceClass":"MHDX","DeviceType":"MHDX 3116","Find":"BD","HttpPort":88,"IPv4Address":{"DefaultGateway":"192.168.1.1","DhcpEnable":false,"IPAddress":"192.168.1.100","SubnetMask":"255.255.255.0"},"IPv6Address":{"DefaultGateway":"","DhcpEnable":true,"IPAddress":"\/64","LinkLocalAddress":"fe80::1a0d:2cff:fed1:a229\/64"},"Init":3238,"MachineName":"MHDX","Manufacturer":"Intelbras","Port":57777,"RemoteVideoInputChannels":0,"SerialNo":"EKHH2502545HM","Vendor":"Intelbras","Version":"4.000.00IB002.17","VideoInputChannels":16,"VideoOutputChannels":0}}}

我可以通過 tcpdump 確認消息已發送並且相機響應:

IP 192.168.0.105.56613 > 192.168.1.100.37810: UDP, length 2
IP 192.168.1.100.37810 > 192.168.0.105.53256: UDP, length 712

然后我寫了一個簡單的python3程序來做同樣的事情:

import socket
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM,socket.IPPROTO_UDP)
s.sendto("a".encode(),("192.168.1.100",37810))

tcpdump 顯示“消息”已發送,但相機從未響應。

IP 192.168.0.105.53792 > 192.168.1.100.37810: UDP, length 1

我知道這個 python 腳本沒有監聽傳入的數據,但是相機應該已經回答並且 tcpdump 應該已經顯示了我錯過了什么?

echo默認情況下會在輸出中添加一個換行符。 我猜相機正在等待換行符來指示請求的結束,所以你也需要在 Python 中發送它。

s.sendto("a\n".encode(),("192.168.1.100",37810))

暫無
暫無

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

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