winpcap 抓包 速度

psc88 2008-08-22 04:09:52
我写了个winpcap抓包测试程序,用的是winpcap3.1版本,当2000个/秒的时候就开始丢包,机器性能不错的,cpu占用不多的。不知道是什么原因,请帮忙看看,谢谢!
void packet_handler(u_char *param,
const struct pcap_pkthdr *header,
const u_char *pkt_data);


FILE* g_fData = 0;


int main(int argc, char* argv[])
{

pcap_if_t *alldevs;
pcap_if_t *d;
int i=0;
char errbuf[PCAP_ERRBUF_SIZE];
pcap_t *adhandle;


if (pcap_findalldevs(&alldevs, errbuf) == -1)
{
fprintf(stderr,"Error in pcap_findalldevs: %s\n", errbuf);
exit(1);
}


for(d=alldevs;d;d=d->next)
{
printf("%d\t", ++i);
}

if(i==0)
{
printf("\nNo interfaces found! Make sure WinPcap is installed.\n");
return 0;
}


d=alldevs;

if ( (adhandle= pcap_open_live(d->name, 65536, 1, 1000, errbuf) ) == NULL)
{
fprintf(stderr,"\nUnable to open the adapter. %s is not supported by WinPcap\n");
pcap_freealldevs(alldevs);
return -1;
}

bpf_u_int32 NetMask;
struct bpf_program fcode;
char filter_app[] ="udp port 1111";//
if(d->addresses != NULL)
{
NetMask =((struct sockaddr_in *)(d->addresses->netmask))->sin_addr.S_un.S_addr;
}else
{
NetMask = 0xffffff;
}

if(pcap_compile(adhandle,&fcode,filter_app,1,NetMask)<0)
{
return 0;
}
if(pcap_setfilter(adhandle,&fcode)<0)
{
return 0;
}

printf("\nlistening on %s...\n", d->description);

pcap_freealldevs(alldevs);

pcap_loop(adhandle, 0, packet_handler, NULL);

return 0;
}
int icount = 0;
int iPackLen = 0;
void packet_handler(u_char *param, const struct pcap_pkthdr *header,const u_char *pkt_data)
{

iPackLen = header->len - 42;
++ icount;
printf("[%ld] [%ld]\n", icount,iPackLen);

}
...全文
153 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
psc88 2008-08-25
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 greatws 的回复:]
pcap_open_live(d->name, 65536, 1, 1000, errbuf)

尝试改下这里的参数试试

65536感觉有点大阿,1600就差不多了阿
[/Quote]
65536 修改位512 , 1024 都测试过了,一样的效果,不理想

psc88 2008-08-25
  • 打赏
  • 举报
回复
一样的,我改成100 10 1 都测试过,还是丢包严重
greatws 2008-08-22
  • 打赏
  • 举报
回复
pcap_open_live(d->name, 65536, 1, 1000, errbuf)

尝试改下这里的参数试试

65536感觉有点大阿,1600就差不多了阿

18,356

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧