winpcap을 class화시킬려고 하는데..잘안되네요...
글쓴이: junteken / 작성시간: 월, 2004/09/27 - 5:42오후
WinThread로부터 상속받은 PacketCap이라는 class를 하나만들고
거기에 InitInstance에 capture library초기화 루틴을 넣었구요
run함수에 pcap_loop을 호출했습니다.
그런데 이 pcap_loop의 세번째 인자에 call back함수포인터를 넣어주어야 되지 않습니까?
저는 그냥 PacketCap의 멤버함수의 포인터를 넣어주었는데요..다음과 같은 컴파일 에러가 나네요..
멤버함수의 포인터는 좀더 특별하게 넘겨주어야 하나요?
답변 부탁드립니다...
그럼 즐거운 한가위되세요~~~
int PacketCap::Run() { // TODO: 여기에 특수화된 코드를 추가 및/또는 기본 클래스를 호출합니다. while(!m_bTerm){ pcap_loop(m_pd, CNT, PacketProcessing, NULL); } return CWinThread::Run(); } void PacketCap::PacketProcessing(u_char * user, const struct pcap_pkthdr * pkt_header, const u_char * pkt_data) { int iCaptured_packet_len = pkt_header->caplen; TRACE("================= Captured Packet =================\n"); TRACE("PacketLength : %d\n", iCaptured_packet_len); }
Forums:
객체의 메쏘드는 그런 식으로 넘겨줄 수 없습니다.객체의 메쏘드를
객체의 메쏘드는 그런 식으로 넘겨줄 수 없습니다.
객체의 메쏘드를 사용하시기 위해서는
클래스 외부에 함수를 만들어서 그 함수의 포인터를 넘겨주고
그 함수 내부에서 특정 객체의 메쏘드를 호출하는 식으로
해결하면 됩니다.
http://home.postech.ac.kr/~sodomau
댓글 달기