파일 찾기에 대한 질문이 있습니다.파일에서 데이터를 더 빨리 읽으십시오.
나는 pcap 파일을 가지고 있으며 특정 패킷을 찾아야합니다. 지금까지 패킷을 찾는 코드는 다음과 같습니다.
while (!find_the_packet)
{
pcap_next_ex(p_pcap, &header, &data); //read the next packet
check_if_the_packet_found();
}
좋은 결과를 얻었습니다.
내 목표는 패킷을 더 빨리 찾는 것입니다. 패킷을 찾을 때까지 패킷별로 확인하지 않습니다.
그래서 (key, value)를 사용하여 데이터베이스 - 해시 맵을 만들었습니다. pcapnav_goto_offset(pcapnav_t *pn, off_t offset, pcapnav_cmp_t boundary)
나는이 기능은 fseek과를 사용하는 것을보고 다음
key -> No. of the packet
value -> the packet itself (or the location of the packet)
나는 또한 pcapnav 라이브러리 함수를 발견이라고 할 수 있습니다. FSEEK가 순차적으로 작동하기 때문에 내 데이터베이스가별로 도움이되지 않습니다.
내 질문 -
은 실제로 작동합니까? 덩어리로 덩어리 읽기? 어떻게 작동합니까? 나는 조금 혼란 스럽다.
만약 그렇다면, pcap 파일로부터 특정 패킷 \ 데이터 청크를 얻는 더 빠른 방법이 있는가?
고맙습니다.
네가 ['fseek'] (http://en.cppreference.com/w/c/io/fseek)에 대해 틀렸어. 다음 번 읽기/쓰기가 일어날 위치를 설정 했어. 기본적으로 변수 할당 일뿐입니다. –
기본 파일 시스템에 따라 다르지만 fseek (및 다음 읽기)는 최신 구현에서 거의 일정한 시간 동안 작동하는 것으로 알려져 있습니다. – Marian
안녕하세요, 감사합니다. 이것은 내 혼란입니다. 위치가 파일 내부의 특정 지점으로 설정되고 현재 위치에서 300MB라고 가정 해 봅시다. 커서가 다음 읽기 \ 쓰기 위치로 즉시 이동합니까? – user3378689