高手帮忙呀!急,在线等待~~~

wyl0502 2003-10-24 07:17:27
代码:《有关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下载。
...全文
48 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
wyl0502 2003-11-16
  • 打赏
  • 举报
回复
首先谢谢你的回复~
你的那句#pragma comment(lib,"wpcap.lib") 是什么用的呀?
我用DEVC++试了一下,有和没有那一句结果是一样的呀,都是
C:\WINDOWS\TEMP/ccGjhjgb.o(.text+0xcf):未命名1.cpp: undefined reference to `pcap_lookupdev'
C:\WINDOWS\TEMP/ccGjhjgb.o(.text+0xf7):未命名1.cpp: undefined reference to `pcap_open_live'
C:\WINDOWS\TEMP/ccGjhjgb.o(.text+0x142):未命名1.cpp: undefined reference to `pcap_open_live'
C:\WINDOWS\TEMP/ccGjhjgb.o(.text+0x186):未命名1.cpp: undefined reference to `pcap_open_live'
C:\WINDOWS\TEMP/ccGjhjgb.o(.text+0x1be):未命名1.cpp: undefined reference to `pcap_loop'

为什么呀?能再帮我一下吗?
ssbull 2003-11-14
  • 打赏
  • 举报
回复
//void ProcessPacket(u_char *templ,const pcap_pkthdr *header,const u_char* pkt_data)
把这句去掉,写重复了:)不好意思
ssbull 2003-11-14
  • 打赏
  • 举报
回复
你的程序中有些括号不匹配,以下是修改后在VC++6.0下编译通过的,你再试试看
#include <stdlib.h>
#include <stdio.h>
#include <pcap.h>
#pragma comment(lib,"wpcap.lib") //加上这句!
#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],100,1,20,error))==NULL)
fprintf(stderr,"\n Error\n");return 0;
break;
}
pcap_loop(fp,0,ProcessPacket,NULL);
return 0;
}

//void ProcessPacket(u_char *templ,const struct pcap_pkthdr *header,const u_char *pkt_data){
void ProcessPacket(u_char *templ,const 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);}

69,369

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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