13.1 给wpcap.dll增加设置重复发送次数的函数
因为wpcap.dll库并没有提供设置重复发送次数的函数,所以在第8章的实例中只能调用Packet.dll库提供的PacketSetNumWrites函数来设置重复发送次数。事实上还可以通过修改wpcap.dll库对应的源代码与配置文件,来添加一个设置重复发送次数的pcap_set_num_write函数。
下面为具体的修改步骤与测试结果。
13.1.1 修改步骤
步骤一:打开winpcap\wpcap\libpcap\pcap\目录下的pcap.h文件,在pcap_sendpacket函数原型前添加下面的函数原型。
int pcap_set_num_write(pcap_t*,int);
步骤二:打开winpcap\wpcap\libpcap\目录下的pcap.c文件,在pcap_sendpacket函数前添加下列函数。
int pcap_set_num_write(pcap_t*p,int nwrites)
{
return PacketSetNumWrites(p->adapter,nwrites);
}
步骤三:修改winpcap\wpcap\PRJ目录下的文件WPCAP.DEF,在pcap_sendpacket这一行前添加pcap_set_num_write函数,否则在wpcap.lib中将会无该函数。
步骤四:在Microsoft Visual Studio 2005中选择Release配置,重新构建wpcap库,然后把构建生成的wpcap.dll与wpcap.lib复制到合适的目录下。
1)把winpcap\wpcap\PRJ\Release\x86下生成的wpcap.dll文件复制到C:\WINDOWS\system32目录下。
2)把winpcap\wpcap\PRJ\Release\x86下生成的wpcap.lib文件复制到E:\WpdPack\Lib目录下,替换原有文件。
3)把winpcap\wpcap\libpcap\pcap\pcap.h文件复制到E:\WpdPack\Include\pcap目录下,替换原有文件。
步骤五:编写测试程序,验证修改的正确性。
为了验证修改的正确性,只要对第8章中的源代码[ch8/send_n工程]做如下简单修改即可,完整的代码见[ch13/send_n_wpcap工程]。
/调用Packet.dll库提供的PacketSetNumWrites函数设置重复发送次数/
//PacketSetNumWrites((LPADAPTER)(adhandle->adapter),50);
/调用修改后的wpcap.dll库提供的pcap_set_num_write函数设置重复发送次数/
pcap_set_num_write(adhandle,50);//使用该行代码
从上面的代码可以看出,屏蔽PacketSetNumWrites((LPADAPTER)(adhandle->adapter),50);代码行,并添加pcap_set_num_write(adhandle,50);代码行即可实现设置重复发送次数的功能。