1

캡처 한 패킷의 TCP 페이로드를 파일에 저장하는 'C'코드를 작성했습니다 (각 패킷의 페이로드는 여러 "\ n"문자로 구분됩니다). C를 사용하면 모든 패킷을 캡처 한 후 파일에서 특정 문자열을 검색 할 수 있습니까?중급 C : 큰 파일의 문자열 검색

P .: 파일이 캡처 된 패킷의 수에 따라 매우 클 수 있습니다.

+2

왜 파일을 쓰고 난 후에 검색하려면 들어오는 패킷이 버퍼에 기록되는 것일까 요? –

+0

페이로드로 한 행에 여러 개의 '\ n'바이트를 포함 할 수있는 TCP 패킷이 있습니까? – Gerhardh

+0

Errr .... 네, 가능합니다. –

답변

1

줄마다 파일을 읽고 strstr을 사용하여 검색하십시오.

#include <stdio.h> 
#include <stdlib.h> 
#include <string.h> 
int main(void) 
{ 
FILE * fp; 
char * line = NULL; 
size_t len = 0; 
ssize_t read; 
char * pos; 
int found = -1; 

fp = fopen("filename", "r"); 
if (fp == NULL) 
    exit(EXIT_FAILURE); 

while ((read = getline(&line, &len, fp)) != -1) 
    { 
     pos = strstr(line,"search_string"); 
     if(pos != NULL) 
     { 
      found = 1; 
      break; 
     } 
    } 

if(found==1) 
    printf("Found"); 
else 
    printf("Not Found"); 

fclose(fp); 

if (line) 
    free(line); 

exit(EXIT_SUCCESS); 
}