我在接收從python程序中的FPGA發送的UDP數據包時遇到問題。我檢查了類似的問題,也做了以下內容:在Python中無法接收UDP數據包
- 經過,Wireshark才能看到的UDP數據包
- 禁用Windows防火牆在PC
- 使用sock.bind(),因爲它是UDP數據包
- 手動設置以太網幀的目的地MAC地址,因爲FPGA不支持ARP
- 設置目的IP用於測試廣播10.10.255.255,接收到沒有數據包
- 設置該分組的UDP校驗和從發送器到0x00 00
這裏的蟒蛇接收器代碼:
import socket
import sys
UDP_IP = "10.10.10.87"
UDP_PORT = 4660
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
sock.bind((UDP_IP, UDP_PORT))
print("Socket: "+str(sock.getsockname()))
while True:
data, addr = sock.recvfrom(1024) # buffer size is 1024 bytes
print(data)
print(addr)
sys.stdout.flush()
當針對發送到10.10.10.87:4660 另一個python腳本(在10.10.10網絡中的另一臺電腦)測試接收器腳本作品精細。我甚至嘗試從我知道收到的包(不同點是源IP,端口& MAC,校驗和(禁用),標識)的數據包在FPGA中逐字節地重新創建UDP數據包。
下面是輸出針對這兩個分組從Wireshark的:
我Wireshark UDP packet(也被接收到的OK左邊,也就是不Python右側獲得賽靈思FPGA包Python的UDP數據包)不知道還有什麼要嘗試。任何幫助,將不勝感激。
*旁白*:將'UDP_IP'設置爲您的本地地址過於具體。相反,請執行'UDP_IP ='''綁定到所有接口。這不會解決今天的問題,但可能會在未來防止出現問題。 – 2014-10-17 16:14:33