5

FPGA から送信された UDP パッケージをコンピューターで読み取ろうとしています。それらはポート 21844 と IP 192.168.1.2 (私のコンピューターの IP) に送信されます。Wireshark でパッケージを確認できます。エラーはありません。ただし、この小さな python スクリプトを実行すると、wireshark が実行されているかどうかにもよりますが、すべてのパッケージのごく一部しか受信されません。

import socket
import sys


HOST, PORT = "192.168.1.2", 21844
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
sock.bind((HOST,PORT)) 
received ,address= sock.recvfrom(2048)
print address

Windows 7 と Norton Internet Security を使用しており、FPGA IP と Python のファイアウォールですべてのトラフィックを許可しています。Windows XP コンピュータ上の同じプログラムも何も受信しません...

助けてくれてありがとう!

4

2 に答える 2

3

OSのTCP/IPスタックは、これらのパケットを永久に保持しません。スクリプトは、実行されるタイミングに大きく依存するもののように見えますrecvfromループして、バックグラウンドでスクリプトを実行してみてください。次に、FPGAからのパケットの送信を開始します。

さらに便利なように、SocketServerPythonのstdlibからモジュールを調べてください。

于 2010-05-28T11:52:28.630 に答える
3

OK、問題が見つかりました: FPGA の UDP チェックサムが間違って計算されました。Wireshark はすべてのパッケージを表示しますが、デフォルトではチェックサムが正しいかどうかをチェックしません。チェックサムを に設定すると0x0000、パッケージが Python に到着します。再び助けてくれてありがとう!

于 2010-06-01T11:03:44.683 に答える