是否可以使用纯winsock捕获以太网帧

是否可以使用纯winsock捕获以太网帧,c,winsock,C,Winsock,我已经为ip数据包头(tcp、udp和icmp)定义了结构,并使用在原始套接字上侦听 socket(AF_INET, SOCK_RAW, IPPROTO_IP) 在一个循环中,我将每个数据包强制转换到ip头结构中,并使用预定义的结构和ip数据包结构的协议id提取tcp、udp或icmp。我知道libcap和wincap,我只想“自己”做:P我不能用winsock捕获以太网帧(比如arp)对吗?除了winsock之外,没有任何库可以获取帧数据吗?也许会创建某种AF_数据包套接字 有人评论说“在w

我已经为ip数据包头(tcp、udp和icmp)定义了结构,并使用在原始套接字上侦听

socket(AF_INET, SOCK_RAW, IPPROTO_IP)
在一个循环中,我将每个数据包强制转换到ip头结构中,并使用预定义的结构和ip数据包结构的协议id提取tcp、udp或icmp。我知道libcap和wincap,我只想“自己”做:P我不能用winsock捕获以太网帧(比如arp)对吗?除了winsock之外,没有任何库可以获取帧数据吗?也许会创建某种AF_数据包套接字

有人评论说“在windows中,第3层以下的内容是不允许的。”


提前感谢

我怀疑libpcap安装了网络筛选器驱动程序。这不是使原始数据包捕获工作正常的关键吗?安装NDIS驱动程序。您可以自己编写,但存在驱动程序签名问题,这可能会减慢您的速度。