我正在尝试通过Winpcap API pcap_sendpacket()发送一些自打包的以太网数据包,但是在调用API一次之后我得到了两个相同的数据包。这两个数据包可以在Wireshark上捕获以进行调试,具有相同的数据和连续的帧编号。
环境是Win7 64bit。而且,在另一台Win7 64bit上运行的相同代码库在Wireshark上只显示一个数据包是很奇怪的。
编辑:
[2016.1.24 19:30]
对不起,由于保密事项,我只能发布与pcap相关的代码部分
// first, enum the device list
pcap_if_t *m_alldevs;
char errbuf[PCAP_ERRBUF_SIZE];
if (pcap_findalldevs(&m_alldevs, errbuf) == -1)
{
// log error ...
for(pcap_if_t *d = m_alldevs; d != NULL; d = d->next)
{
// second, open the interface
// use flag PCAP_OPENFLAG_MAX_RESPONSIVENESS to get response quickly
// set timeout to 1000ms
errbuf[PCAP_ERRBUF_SIZE];
pcap_t* fp = pcap_open(d->name, 65536, PCAP_OPENFLAG_PROMISCUOUS|PCAP_OPENFLAG_MAX_RESPONSIVENESS, 1000, NULL, errbuf);
// third, get the interface device then release all the device
pcap_freealldevs(m_alldevs);
// 4th, send data
// unsigned char* buf;
// int size;
pcap_sendpacket(fp, buf, size);
对于数据包,数据包是手工制作的,大小在64到1500之间,有一个IEEE 802.3类型的帧头,两个mac字段是自定义的。
在有错误的机器上,Winpcap的版本是“4.1.0.2980”,Wireshark是“64bit 1.12.3”;我将检查明天没有错误的其他机器。
编辑:
[2016.1.26 10:30] Winpcap的版本是“4.1.0.2980”,与有错误的机器上的版本相同。 Wireshark的版本是“64bit 1.12.8”。这两个操作系统都是Win7 Enterprise 64bit。
答案 0 :(得分:0)
我有同样的问题。
我要解决的步骤:
winpcap
和npcap
。我都在本地计算机上npcap