UDP Test 프로그램 분석.

Slides:



Advertisements
Similar presentations
HANNAM Univ. 제 3 장 주소 체계와 데이터 정렬 Network Lab. Byoung-Son, Choi TCP/IP Socket Programming…
Advertisements

Network Lab. Byoung-Son, Choi
Chapter 06. UDP 서버/클라이언트.
TCP/IP Socket Cover Slide 조태문.
Network Lab. Young-Chul Hwang
Department of Computer Science and Engineering
TCP/IP 소켓 프로그래밍 - C 버전 중에서
윤 홍 란 다이알로그(대화상자) 윤 홍 란
소켓 모델 주소 지정 in_addr_t inet_addr(const char *ip_address) 연결 지향 모델 (TCP)
TCP/IP Socket Cover Slide 조태문.
24 장 TCP/IP 24.1 개요 24.2 네트워크층 24.3 주소 지정 24.4 서브넷팅틍
Chapter 03. 소켓 주소 구조체 다루기.
Network Lab. Seoung Hyeon, Lee
Internet Address Conversion Functions
3장. 소켓 주소 구조체 다루기 소켓 주소 구조체의 정의와 초기화 방법을 익힌다.
인터넷 주소 변환 School of Electronics and Information. Kyung Hee University.
제 14장 Multicast & Broadcast
네트워킹 CHAPTER 13 Section 1 네트워킹의 개요와 java.net 패키지 Section 2 인터넷 주소와 URL
Department of Computer Engineering
한남대학교 컴퓨터공학과 컴퓨터 네트워크 실험실
UDP (User Datagram Protocol)
Department of Computer Engineering
인공지능실험실 석사 2학기 이희재 TCP/IP Socket Programming… 제 7장 소켓 연결의 우아한 종료 인공지능실험실 석사 2학기 이희재
네트워크 프로그래밍 Yang-Sae Moon Department of Computer Science
Socket Address Structure and Byte Ordering Functions
한남대학교 컴퓨터공학과 컴퓨터 네트워크 실험실
Socket Address Structure and Byte Ordering Functions
Internet Address Conversion Functions
7장. UDP 서버-클라이언트 UDP 서버-클라이언트의 기본 구조와 동작 원리를 이해한다.
Chapter 06. UDP 서버/클라이언트.
인공지능실험실 박사 1학기 장성만 TCP/IP Socket Programming… 9장 소켓의 다양한 옵션 인공지능실험실 박사 1학기 장성만
TCP/IP 응용 프로그램에 적용 가능한 다양한 소켓 옵션을 이해하고 활용한다.
ARP Project 조 충 호 교수님 김 세 진 조교님 조 진 형 변 익 수
프로젝트 발표 순서 12/7(수), 팀 별 15분 발표순서 PPT (팀 별 이름, 구현 내용, 결과-그래프 포함) 각 기법당
Department of Computer Science and Engineering
13장 고급 입출력 함수 박사 4학기 최 성자.
TCP/IP Socket Programming…
Chapter 03. 소켓 주소 구조체 다루기.
Socket Address Structure and Byte Ordering Functions
Internet Address Conversion Functions
Socket Address Structure and Byte Ordering Functions
7장. UDP 서버-클라이언트 UDP 서버-클라이언트의 기본 구조와 동작 원리를 이해한다.
Chapter 5 UDP Socket 소켓 프로그래밍.
WOL(Wake-On Lan) 컴퓨터공학과 4학년 박기웅.
Chapter 07. 소켓 옵션.
TCP/IP 응용 프로그램에 적용 가능한 다양한 소켓 옵션을 이해하고 활용한다.
Internet Address Conversion Functions
22 장 전송층(Transport Layer)
School of Electronics and Information. Kyung Hee University.
21 장 전송층(Transport Layer)
윤성우의 열혈 TCP/IP 소켓 프로그래밍 윤성우 저 열혈강의 TCP/IP 소켓 프로그래밍 개정판
9 TCP의 이해 학습 목표 전송 계층 프로토콜이 제공하는 기능을 이해한다.
Department of Computer Engineering
Lab 8 Guide: 멀티스레딩 예제 2 * Critical Section을 이용한 멀티스레딩 동기화 (교재 15장, 쪽)
Department of Computer Engineering
인터넷 주소변환 School of Electronics and Information. Kyung Hee University.
10 기타 전송 계층 프로토콜.
학습목표 처음 만드는 비주얼 베이직 프로그램 프로그램 실행과 실행 파일 생성. 학습목표 처음 만드는 비주얼 베이직 프로그램 프로그램 실행과 실행 파일 생성.
SelfShopping ProJect.
Chapter 04. TCP 서버/클라이언트.
Chapter 02. 윈도우 소켓 시작하기.
다자간 채팅프로그램 김형도 허영민
인공지능실험실 박사 1학기 장성만 TCP/IP Socket Programming… 제 8장 도메인 이름과 인터네 주소 인공지능실험실 박사 1학기 장성만
동적메모리와 연결 리스트 컴퓨터시뮬레이션학과 2016년 봄학기 담당교수 : 이형원 E304호,
4. IP 데이터그램과 라우팅 (6장. 인터넷과 IP) IP 데이터그램 : 특정 물리망에 종속되지 않은 가상의 패킷 형식.
Chapter 03. 소켓 주소 구조체 다루기.
소켓의 생성과 프로토콜의 설정 School of Electronics and Information.
Network Lab. Young-Chul Hwang
Completion Port기반의 채팅프로그램
MFC 기초 윈도우 응용프로그램 개발 간략한 역사 Microsoft Foundation Classes
Presentation transcript:

UDP Test 프로그램 분석

프로젝트 구조 udptestDlg.cpp : implementation file udptest.cpp : Defines the class behaviors for the application. udptest.h : main header file for the UDPTEST application udptestDlg.h : header file stdafx.h : include file for standard system include files

UI

C++ - View는 상태바, 메뉴, 작업줄등을 뺀부분을 제어 - main fram은 view이외에 부분을 제어 - doc은 Data처리

UI DoDataExchange(), OnPaint() 메쏘드를 이용해 UI를 완성시켰다. 이프로그램의 UI는 CDialog 클래스를 이용해서 만들었다. Cdialog는 기본적인 윈도우 프로그램 창을 만들어 주며 DoDataExchange(), OnPaint() 메쏘드를 이용해 UI를 완성시켰다. 완성된 UI에 MESSAGE_MAP() 메쏘드를 이용하여 특정 이벤트에 적절한 동작을 하도록 설계가 되어있다. 또한 Thread를 생성시켜 UDP통신을 한다.

UI - DoDataExchange() => View 생성 Method(Text, Check Box) DDX_Control - 리스트 상자, 콤보 상자, 에디트 상자, 각종 컨트롤 아이템을 연결시킴. DDX_Text - Cstring, int, LONG과 같은 변수를 연결해 컨트롤할 때 사용. DDX_Check - int 또는 BOOL 변수를 연결해 컨트롤을 사용. DDX_Radio - 라디오 버튼을 변수와 연결시킬 때 사용. AfxMessageBox() – 단순 메시지 출력 Ex ) Afx(MessageBox(“안녕”, 옵션);

UI - MESSAGE_MAP() => 이벤트 핸들링 메쏘드 DECLARE_MESSAGE_MAP() // 선언 BEGIN_MESSAGE_MAP // 시작 ON_BN_CLICKED // 클릭시 이벤트 발생 END_MESSAGE_MAP // 종료 OnPaint() => 아이콘 삽입 메쏘드 CPaintDC dc(this); // device context for painting dc.DrawIcon(x, y, m_hIcon); // Draw the icon

UDP Protocol이란? User Datagram Protocol의 약자로 전송계층에서 제공해야할 최소한의 서비스만 제공하는 전송 프로토콜. 특징 : 1. 비연결형 (Port만 확인하여 소켓을 식별하고 송수신)     2. 패킷 오버헤드가 적어 네트워크 부하 감소     3. 비 신뢰성    4. 오류검출(헤더에 오류 검출 필드 포함)

UDP 프로그래밍 절차

Struct sockaddr 구조체 winsock2.h 에 정의 되어 있다. #define AF_INET 2 // internetwork : UDP, TCP, etc.. struct sockaddr{ sa_family_t sa_family; // 소켓의 주소체계. PF_INET= IPv4 주소체계. char sa_data[14]; // 해당 주소체계에서 사용하는 주소 정보. } struct sockaddr_in{ sin_family_t sin_family; // IPv4 주소체계에서 사용하므로 항상 AF_INET으로 설정 unist16_t sin_port; // 포트 번호 struct in_addr sin_addr; // IP주소를 나타내는 32비트 정수 타입 구조체 char sin_zero[8]; // sockaddr과 같은 크기를 유지하기 위해 필요한 패딩(padding) 공간. 항상 0.

Winsock 초기화 및 종료 소켓 API를 호출하기 전에 반드시 윈속 초기화를 해야한다 WSAStartup(wVersionRequested, IpWSAData) // 프로그램에서 사용할 윈속 버전 요청 wVersionRequested = 프로그램이 요구하는 윈속 버전 Ex ) 윈속 3.2버전 요청시 MAKEWORD(3,2) IpWSAData = 시스템에서 제공하는 윈속 구현에 대한 세부 사항 - WSACleanup() // 윈속 종료

OnSendmessage() 소켓을 생성하고 데이터를 보내는 메쏘드 Receive 또한 절차는 유사하므로 생략

OnSendmessage() // 소켓 생성 sock = socket( AF_INET, SOCK_DGRAM, 0 ); AF_INET >> 인터넷 프로토콜 체계 SOCK_DGRAM >> 데이터그램 방식

OnSendmessage() - Sockaddr 세팅 addrReceiver.sin_family = AF_INET; // 바이트 순서 변환 addrReceiver.sin_port = htons( m_PORTNUM ); // Host ip address addrSender.sin_addr.s_addr =inet_addr("192.9.211.157");

OnSendmessage() - bind 호출 bind(sock, (struct sockaddr )&addrReceiver, sizeof(addrReceiver)); (Struct sockaddr *) & addrReceiver >> 서버 소켓주소 구조체 포인터 Send data memcpy(sendbuf,&sendprotocol,sizeof(sendprotocol)); - Data Send sendto( sock, sendbuf, sendDataLength, 0, ( SOCKADDR * )&addrSender, sizeof( SOCKADDR ) )

Thread Thread란 프로세스 안에서 실제 실행의 단위 MFC에서 스레드를 생성하는 함수는 AfxBeginThread로 특정 전역 함수를 별도의 스레드 단위로 실행이 가능하다. CWinThread* pThead= AfxBeginThread(TheadReceive,&threadInfo); CWinThread* pThead1= AfxBeginThread(TheadSend_CPU1,&threadInfo); CWinThread* pThead2= AfxBeginThread(TheadReceive_Ras,&threadInfo);