본문 바로가기
코스웨어/11년 내장형하드웨어

[내장형]이수란_2011.10.06

by 알 수 없는 사용자 2011. 10. 6.
728x90
반응형
ICMP
Internet Control Message Protocol
 : 라우터와 호스트 간의 제어 or 오류정보를 통신하는 방식
   -> 라우터가 경로설정을 할 수 없거나 데이타를 전달 할 수 없는 경우 발생했을때, 
       네트워크상의 문제를 피하거나 복구하도록 출발지 호스트에 오류의 처리와 전송경로의 변경등을 ICMP를 이용해 통보.
   

[ ICMP 구조  ]

 

- ① type (1 byte) :  error message 구별
- ② code(1 byte) : 각 type 에 따라 오류 유형에 대한 추가정보
- ③ checksum( 2byte): ICMP message 에 대한 checksum
- ④ message ( 4 btye): type 와 code 에 연관된 내용들

: 32 bit ICMP 헤더 + ICMP 데이터

[ ICMP 헤더]

netinet/ip_icmp.h



- ① type 유형
0         icmp echo replay                             icmp 요청에 대한 icmp 응답, ping에 사용
           --② code : 0
           ----④ 추가내용  : identifier(2byte), sequence number (2byte)

3         destination unreachable message     수신지까지 메시지가 도착할 수 없음
          - ② code : 0~15
          ----④ 추가내용  : unused

4         source quench message              송신지 억제
                                                         (라우터의 버퍼가 차서 더이상 자료를 받을 수 없을 때)
           --② code : 0
           ----④ 추가내용  : unused

5         redirect message                           재지정(대체 경로를 알리기 위해)
           --② code: 0~3
           ----④ 추가내용  :  Router IP address (4byte)

8         icmp echo request                           목적지 호스트에 ICMP 응답 요청, ping에 사용
           --② code : 0
           ----④ 추가내용  : identifier(2byte), sequence number (2byte)

11        time exceeded message                  시간초과  TTL 만료.
           --② code : 0~1
           ----④ 추가내용  : unused

12        parameter problem message            매개변수 문제
         

13        time stamp                                    시간기록 요청

14        time stamp reply message               시간기록 응답

                                                                            


[ ICMP 헤더 출력]


_L3_ICMP.c_

_L3_ICMP.h_








8장 - 대화상자 ( Modeless )

대화상자 동작에 따른 분류
   - 모달(Modal)형 - 대화상자를 닫기전까지 다른 작업 불가 (ex. MessageBox 대화상자)
                             다른 프로그램으로의 전환은 가능.
   - 모델리스(Modeless)형 - 대화상자를 연 채로 다른 작업 가능 (ex. 찾기 대화상자)



   CreateDialog (hInstance, lpName, hWndParent, lpDialogFunc);
 : 모델리스형 대화상자 생성
   생성만하고 화면에 출력하지 않으므로 ( 기본 설정이 WS_VISIBLE 스타일 없음),
   
  ShowWindow(HWND hWnd, SW_SHOW); 
: 함수로 화면에 출력해야 함. 
   
   BOOL IsWindow (HWND hWnd);
: 유효한 윈도우 핸들인지 검사. 
  윈도우가 존재하면 TRUE, 없으면 FALSE 리턴
  -> 대화상자가 이미 생성된 상태에서 여러개의 대화상자 만들어 질수 있음
      이를 방지하기 위해 FALSE 일 경우에만 대화상자 생성.
      (대화상자의 핸들을 전역변수로 선언, 생성시 핸들 값을 저장하고, 파괴시 핸들 값을 초기화 함)

 DestroyWindow(HWND hWnd);
: 대화상자 닫기

 IsDialogMessage (hMDlg, &Message)
: 대화상자와 관련된 메시지면 TRUE 리턴
                  관련없는 메시지면 FALSE 리턴
  대화상자가 유효할 때 (TRUE==IsWindow) 메시지가 입력되면, 대화상자의 메시지인지 구분함.


 모달형 대화상자  모델리스형 대화상자
 DialogBox
  대화상자를 만들고 운용하는 모든 일.
  대화상자가 닫힐 때 리턴

  
OK /Cancel 버튼 주로 사용

EndDialog
 대화상자 종료



CreateDialog
 대화상자를 만들고, 운용하지는 않음
 생성 후 즉시 대화상자 핸들리턴
 (다중 생성 방지위해 생성전 검사필요)

Change / Close 버튼 주로 사용

InvalidateRect
 값 변경시 대화상자 닫지않고
 메인 윈도우 무효화, 화면 재출력
DestroyWindow
 대화상자를 닫을 때 사용
 닫기 후, 대화상자의 윈도우 핸들 초기화


예제, InfoDlg 프로젝트 이용해 , 대화상자를 닫지 않은 채로 값을 변경 & 출력
       (마우스 왼클릭시 대화상자, 우클릭시 메시지박스 출력)


_main.cpp_

_msg.cpp_




ps.  네트워크가 제대로 정리가 안되네요; 추가설명해주실 분 대환영! 합니다.
       질문은 CM쌤한테?^^;

728x90