从UDP端口接收以太网帧

时间:2013-05-10 09:45:54

标签: c linux udp ethernet

我需要监听多个UDP端口并将接收的数据报处理为以太网帧。我想不出除了创建SOCK_RAW套接字以接收以太网帧之外的任何其他解决方案,检查我收到的是UDP数据报,然后提取数据报以识别UDP端口。

有更好的方法吗?是否有某种套接字可以让我在特定端口上接收UDP数据报并仍然访问整个以太网帧?

2 个答案:

答案 0 :(得分:1)

我建议您使用pcap库。它并不难,它可以在广泛的系统之间移植。您可以简单地过滤和捕获您想要的内容。

  

libpcap和WinPcap提供数据包捕获和过滤引擎   许多开源和商业网络工具,包括协议   分析器(数据包嗅探器),网络监视器,网络入侵   检测系统,交通发电机和网络测试仪。

另一个建议是libcrafter,它是一个高级数据包创建者和解码器。虽然它只是C ++。

答案 1 :(得分:0)

不确定您的平台是否支持此功能,但请尝试:

    int s=socket(AF_INET,SOCK_PACKET,htons(ETH_P_ALL));

http://www.tldp.org/HOWTO/Ethernet-HOWTO-2.html