无法从FPGA接收UDP数据包

时间:2015-11-25 03:15:13

标签: udp fpga ethernet

我想从FPGA设备向计算机发送消息。我不知道如何使用SOC和编写linux驱动程序,因此我在不使用操作系统的情况下对UDP帧进行分组。我的IP固定为192.168.0.1,掩码为255.255.255.0,MAC地址为10-C3-7B-44-FA-8A。我发现wireshark可以识别我的UDP数据包,并显示IP地址和端口是可以的,但我的应用程序不能。

Wireshark snapshot

我尝试了两个用python和matlab编写的应用程序,如下所示,

蟒:

s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM, socket.IPPROTO_UDP)
s.bind((192.168.0.1, 4096))
buf=s.recvfrom(65536)

Matlab的:

u = udp('192.168.0.2',4096,'LocalPort',4096,'LocalHost','192.168.0.1');
fopen(u)
buf=fread(u,1000)

两个应用程序在执行代码的最后一行后都会提示超时。

有什么问题吗?

1 个答案:

答案 0 :(得分:0)

由于您可以使用Wireshark查看数据包,因此似乎是一个应用程序问题。 Scapy具有出色的数据包操作工具。

下面的python代码应该打印目标IP为192.168.0.1的数据包(基于Scapy Doc

#! /usr/bin/env python
from scapy.all import *

def monitor_cb(pkt):
    if IP in pkt and pkt[IP].dst == '192.168.0.1':
        return pkt.show()

sniff(prn=monitor_cb, store=0)

请注意,它需要以root身份运行。