高手帮忙呀!急,在线等待~~~
代码:《有关sniffer的》
#include <stdlib.h>
#include <stdio.h>
#include <pcap.h>
#define MAX_PRINT 80
#define MAX_LINE 16
void ProcessPacket(u_char*,const struct pcap_pkthdr*,const u_char*);
void usage();
int snaplen=100;
int main(int argc,char**argv){
pcap_t *fp;
char error[PCAP_ERRBUF_SIZE];
char *dev;
if(argc<3){
printf("\n\t easydump[-n adapter]|[-f file_name]\n\n");
return 0;}
switch(argv[1][1]){
case 'n':{
if(!strcmp("auto",argv[2])){
dev=pcap_lookupdev(error) ;
if((fp=pcap_open_live(dev,snaplen,1,20,error))==NULL){
fprintf(stderr,"\n Error\n");return 0;
}
}
else if((fp=pcap_open_live(argv[2],100,1,20,error))==NULL){
fprintf(stderr,"\n Error\n");return 0;
}
}
break;
case 'f':
{
if((fp=pcap_open_live(argv[2],0))==NULL){
fprintf(stderr,"\n Error\n");return 0;}};break;}
pcap_loop(fp,0,ProcessPacket,NULL);
}
void ProcessPacket(u_char *templ,const struct pcap_pkthdr *header,const u_char *pkt_data){
u_int i=0;
printf("%ld:%ld(%ld)\n",header->ts.tv_sec,header->ts.tv_usec,header->len);
while((i<MAX_PRINT)&&(i<header->len)){
i++;
printf("%x,pkt_data[i-1]");
if(i%MAX_LINE==0)printf("\n");
}
void usage( ) { exit(0);}
编译结果:编译器: Default compiler
执行 g++.exe...
g++.exe "C:\My Documents\未命名1.cpp" -o "C:\My Documents\未命名1.exe" -I"C:\DEV-CPP\include\c++" -I"C:\DEV-CPP\include\c++\mingw32" -I"C:\DEV-CPP\include\c++\backward" -I"C:\DEV-CPP\include" -I"C:\wpdpack\Include" -L"C:\DEV-CPP\lib"
C:/wpdpack/Include/pcap.h: In function `int main(int, char**)':
C:/wpdpack/Include/pcap.h:188: too few arguments to function `pcap_t*
pcap_open_live(const char*, int, int, int, char*)'
C:/My Documents/未命名1.cpp:31: at this point in file
C:/My Documents/未命名1.cpp: In function `void ProcessPacket(u_char*, const
pcap_pkthdr*, const u_char*)':
C:/My Documents/未命名1.cpp:43: parse error before `{' token
执行结束
用的是DEV-C++,pcap.h可在http://winpcap.polito.it/install/bin/wpdpack_3_0.zip下载。