繁体   English   中英

从UDP端口接收以太网帧

[英]Receiving Ethernet frames from an UDP port

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

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

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

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

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

不知道您的平台是否支持此功能,请尝试:

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM