초고속정보통신망 수업시간에 AMAN2002 를 이용하여 네트워크 레이어의 헤더들을 분석하는 프로그램을 만들고 있습니다.
하지만 책에 나온대로 하게되면 오류 투성이...
1. header 파일의 선언
t_IPHeader 구조체를 사용하기 위해서는 IPViewerDlg.h 에 다음과 같은 헤더들을 추가해 주어야 합니다.
#include <afxsock.h>
#include "ProtocolHeader.h"
afxsock.h 를 추가해주는 이유는 t_IPHeader 에서 사용하는 u_char 타입이 정의되어 있지않아 컴파일오류를 발생하는데 그 것을 해결하기 위해 필요합니다.
2. 멤버변수의 초기화
m_tIPHeader 변수를 초기화 하지 않으면 OnBUTTONStartCapture() 함수에서 메모리를 해제하는 부분에서 문제가 발생합니다.
if (m_tIPHeader != NULL) {
delete [] m_tIPHeader;
m_tIPHeader = NULL;
}
m_tIPHeader 를 초기화 하지않으면 NULL 값이 아닌 쓰레기 값이 셋팅이 되어 있어서 생성자에서 m_tIPHeader 변수를 초기화 해주어야 합니다.
3. CListCtrl 의 헤더 설정
4장에서 했던 EtherViewer 에서는 OnInitDialog() 함수에서 CListCtrl 객체에 헤더를 설정하여 주었습니다.
5장에서는 누락이 되었습니다... 아래와 같이 추가해주면 됩니다.
m_LIST_PacketInfo.InsertColumn(0, "번호", LVCFMT_CENTER, 40);
m_LIST_PacketInfo.InsertColumn(1, "근원지 IP 주소", LVCFMT_LEFT, 100);
m_LIST_PacketInfo.InsertColumn(2, "목적지 IP 주소", LVCFMT_LEFT, 100);
m_LIST_PacketInfo.InsertColumn(3, "IP 패킷의 헤더", LVCFMT_LEFT, 400);
m_LIST_PacketInfo.SetExtendedStyle(LVS_EX_FULLROWSELECT);
몇가지 함정이 더 있었는데... 생각나는대로 더 정리해야 할 것 같습니다.