int main() { pcap_file_header pfh; pcap_header ph; int count = 0; unsigned char * buff = NULL; unsigned int readSize = 0; int ret = 0; buff = (unsigned char *)malloc(MAX_ETH_FRAME); FILE *fp = fopen("./test", "rb"); if (fp == NULL) { fprintf(stderr, "Open file error.\n"); return 0; } int headerlen = sizeof(pcap_file_header); //read pcap_file_header fread(&pfh, sizeof(pcap_file_header), 1, fp); prinfPcapFileHeader(&pfh); unsigned int sec_timestamp = 0; unsigned int m_timestamp = 0; unsigned int sleep_timestamp = 0; unsigned int sleep_timestamp_sec = 0; for (count = 1;; count++) { if(parse_pcap( fp, buff)<0) break; } if (buff) { free(buff); buff = NULL; } if (fp) { fclose(fp); fp = NULL; } return 0; }
int main (int argc, const char * argv[]) { printf("sizeof:int %lu,unsigned int %lu,char %lu,unsigned char %lu,short:%lu,unsigned short:%lu\n", sizeof(int),sizeof(unsigned int),sizeof(char),sizeof(unsigned char),sizeof(short),sizeof(unsigned short)); pcap_file_header pfh; pcap_header ph; int count=0; void * buff = NULL; int readSize=0; int ret = 0; FILE *fp = fopen(PCAP_FILE, "rw"); if (fp==NULL) { fprintf(stderr, "Open file %s error.",PCAP_FILE); ret = ERROR_FILE_OPEN_FAILED; goto ERROR; } fread(&pfh, sizeof(pcap_file_header), 1, fp); prinfPcapFileHeader(&pfh); //fseek(fp, 0, sizeof(pcap_file_header)); buff = (void *)malloc(MAX_ETH_FRAME); for (count=1; ; count++) { memset(buff,0,MAX_ETH_FRAME); //read pcap header to get a packet //get only a pcap head count . readSize=fread(&ph, sizeof(pcap_header), 1, fp); if (readSize<=0) { break; } printfPcapHeader(&ph); if (buff==NULL) { fprintf(stderr, "malloc memory failed.\n"); ret = ERROR_MEM_ALLOC_FAILED; goto ERROR; } //get a packet contents. //read ph.capture_len bytes. readSize=fread(buff,1,ph.capture_len, fp); if (readSize != ph.capture_len) { free(buff); fprintf(stderr, "pcap file parse error.\n"); ret = ERROR_PCAP_PARSE_FAILED; goto ERROR; } printPcap(buff, ph.capture_len); printf("===count:%d,readSize:%d===\n",count,readSize); if (feof(fp) || readSize <=0 ) { break; } } ERROR: //free if (buff) { free(buff); buff=NULL; } if (fp) { fclose(fp); fp=NULL; } return ret; }
int main (int argc, const char * argv[]) { printf("sizeof:int %d,unsigned int %d,char %d,unsigned char %d,short:%d,unsigned short:%d\n", sizeof(int),sizeof(unsigned int),sizeof(char),sizeof(unsigned char),sizeof(short),sizeof(unsigned short)); pcap_file_header pfh; pcap_header ph; int count=0; void * buff = NULL; int readSize=0; int ret = 0; initList(&pList); FILE *fp = fopen64(PCAP_FILE, "rw"); if (fp==NULL) { fprintf(stderr, "Open file %s error.\n",PCAP_FILE); ret = ERROR_FILE_OPEN_FAILED; printf("%d\n",ret); goto ERROR; } //文件已读到fp中。 fread(&pfh, sizeof(pcap_file_header), 1, fp); prinfPcapFileHeader(&pfh); // fseek(fp,96,SEEK_SET); buff = (void *)malloc(MAX_ETH_FRAME); for (count=1;count; count++) { memset(buff,0,MAX_ETH_FRAME); //read pcap header to get a packet //get only a pcap head count . readSize=fread(&ph, sizeof(pcap_header), 1, fp); if (readSize<=0) { break; } //printfPcapHeader(&ph); if (buff==NULL) { fprintf(stderr, "malloc memory failed.\n"); ret = ERROR_MEM_ALLOC_FAILED; goto ERROR; } //get a packet contents. //read ph.capture_len bytes. //fseek(fp,sizeof(pcap_header),SEEK_CUR); if(ph.capture_len>2000||ph.capture_len<0) { puts("warning....."); sleep(5); } readSize=fread(buff,1,ph.capture_len, fp); // if (readSize != ph.capture_len) { if (readSize < 0) { free(buff); fprintf(stderr, "pcap file parse error:%d\t%d\n", readSize, ph.capture_len); ret = ERROR_PCAP_PARSE_FAILED; goto ERROR; } printPcap(buff, readSize,&ph); // sleep(5000); printf("===count:%d,readSize:%d===\n",count,readSize); if (feof(fp) || readSize <=0 ) { break; } } ERROR: //free if (buff) { free(buff); buff=NULL; } if (fp) { fclose(fp); fp=NULL; } return ret; }