コード例 #1
0
ファイル: _main.c プロジェクト: yujun1703/ucpaas_pcap_aly
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;
}
コード例 #2
0
ファイル: 3.c プロジェクト: hkusb/hust
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;

}