7장. UDP 서버-클라이언트 UDP 서버-클라이언트의 기본 구조와 동작 원리를 이해한다.

Slides:



Advertisements
Similar presentations
Network Programming:
Advertisements

1 ‘ 우리나라의 주요공업 ’ - 정도웅, 주민혁, 안수진, 백경민, 엄다운, 박경찬 -.
TCP 서버/클라이언트 동작 원리 - (1) TCP 서버/클라이언트 예 웹 서버 웹 클라이언트 웹 클라이언트
공부할 내용 조상들이 살던 곳 자연과 잘 어울리는 한옥 지방에 따라 서로 다른 집의 모양 섬 지방의 집
사랑, 데이트와 성적 자율성 :데이트 성폭력!!! 성폭력예방교육 전문강사 / 여성학 전공 신 순 옥.
6장. 멀티스레드 멀티스레드 프로그래밍의 필요성을 이해하고 기본 개념을 익힌다.
Chapter 09. 소켓 입출력 모델(I).
퇴계와 율곡의 사회사상 비교 남 일 재 동서대학교 교수/ 정치학 박사 1. 퇴계 이황과 율곡 이이의 약전(略傳)
Understanding of Socket and File I/O
TCP/IP Network Experimental Programming [IPv6에 의한 통신 실험]
Chapter 06. UDP 서버/클라이언트.
501. 군인들의 세상 502. 민정 이양과 한일회담 이선용.
TCP/IP Socket Cover Slide 조태문.
TCP Client/Server Program
제 12 장 브로드캐스팅과 멀티캐스팅.
TCP/IP 소켓 프로그래밍 - C 버전 중에서
소켓 모델 주소 지정 in_addr_t inet_addr(const char *ip_address) 연결 지향 모델 (TCP)
4장. 소켓 유형과 프로토콜 Network Lab. 이 원 구 1.
PHP 웹 프로그래밍 (PHP Web Programming) 네트워크 프로그래밍 문양세 강원대학교 IT대학 컴퓨터과학전공.
TCP/IP Socket Cover Slide 조태문.
TCP Client/Server Program
Network Lab. Seoung Hyeon, Lee
얇지만 얇지 않은 TCP/IP 소켓 프로그래밍 C 2판
컴퓨터 네트워크 PART 03 프로그래밍 (chapter 01 Socket 프로그래밍) 임효택
Multimedia & Mobile Communications Lab.
Chapter 11. Raw 소켓.
Internet Address Conversion Functions
3장. 소켓 주소 구조체 다루기 소켓 주소 구조체의 정의와 초기화 방법을 익힌다.
6장 비연결형 지향 프로토콜 Database Lab 강 우 석.
11 소켓 프로그래밍 기초.
인터넷 주소 변환 School of Electronics and Information. Kyung Hee University.
14장 소켓.
제 14장 Multicast & Broadcast
한남대학교 컴퓨터공학과 컴퓨터 네트워크 실험실
인공지능실험실 석사 2학기 이희재 TCP/IP Socket Programming… 제 7장 소켓 연결의 우아한 종료 인공지능실험실 석사 2학기 이희재
(Web Programming & Practice)
Socket Address Structure and Byte Ordering Functions
Department of Computer Engineering
Socket Address Structure and Byte Ordering Functions
Chapter 8 연결형 프로토콜 서버 발표자 : SE Lab 황 성 하
Department of Computer Engineering
Chapter 06. UDP 서버/클라이언트.
Chapter 12. 직렬 통신과 무선 프로토콜.
TCP/IP 응용 프로그램에 적용 가능한 다양한 소켓 옵션을 이해하고 활용한다.
Advanced Socket Programming
7장. UDP 서버-클라이언트 UDP 서버-클라이언트의 기본 구조와 동작 원리를 이해한다.
Chapter 09. 소켓 입출력 모델(I).
Chapter 07. 소켓 옵션.
TCP/IP 응용 프로그램에 적용 가능한 다양한 소켓 옵션을 이해하고 활용한다.
School of Electronics and Information. Kyung Hee University.
네트워크 프로그래밍의 이해 School of Electronics and Information.
윤성우의 열혈 TCP/IP 소켓 프로그래밍 윤성우 저 열혈강의 TCP/IP 소켓 프로그래밍 개정판
Chapter 16 Socket Interface.
정치개혁의 가능성 논의 권력구조 개편을 통하여 본 -개헌을 통한 정부형태의 변화를 중심으로 [한국정치론] 윤성이 교수님
Department of Computer Engineering
Department of Computer Engineering
윤성우의 열혈 TCP/IP 소켓 프로그래밍 윤성우 저 열혈강의 TCP/IP 소켓 프로그래밍 개정판
제 12 장 브로드캐스팅과 멀티캐스팅 정보통신연구실.
MONSTER CAR 구정재 한석우 김재형.
노년기 발달 장안대 행정법률과 세류반 정 오 손
Chapter 04. TCP 서버/클라이언트.
태국 문학 욜라다 왓짜니 싸란차나 팟차라와라이 끼따야펀 르앙다우 타니다.
제 14 장 응용 계층과 클라이언트-서버 모델 클라이언트-서버 모델 14.2 동시성 14.3 프로세스 14.4 요약.
Department of Computer Engineering
워밍업 실뭉치 전달게임.
매물장 로그인 직원을 미리 생성하시면 직원 ID로 로그인 가능.
Chapter 03. 소켓 주소 구조체 다루기.
소켓의 생성과 프로토콜의 설정 School of Electronics and Information.
음파성명학 최종욱.
Department of Computer Engineering
Presentation transcript:

7장. UDP 서버-클라이언트 UDP 서버-클라이언트의 기본 구조와 동작 원리를 이해한다. IPv4와 IPv6 기반 UDP 서버-클라이언트를 작성할 수 있다. 브로드캐스팅의 개념을 이해하고 UDP를 이용해 구현할 수 있다.

TCP와 UDP (1) TCP와 UDP의 공통점 포트 번호를 이용해 주소를 지정 데이터 오류를 체크 IP와 달리 TCP와 UDP는 헤더는 물론이고 데이터에 대한 오류도 체크함 TCP/IP 윈도우 소켓 프로그래밍

TCP와 UDP (2) TCP와 UDP의 차이점 항목 TCP UDP ① 연결형 프로토콜 - 연결 설정 후 통신 가능 비연결형 프로토콜 - 연결 설정 없이 통신 가능 ② 신뢰성 있는 데이터 전송 - 데이터를 재전송함 신뢰성 없는 데이터 전송 - 데이터를 재전송하지 않음 ③ 일대일 통신 일대다 통신 ④ 데이터 경계 구분 안 함 - 바이트 스트림 서비스 데이터 경계 구분함 - 데이터그램 서비스

TCP와 UDP (3) UDP의 특징 연결 설정을 하지 않으므로 connect( ) 함수 불필요 프로토콜 수준에서 신뢰성 있는 데이터 전송을 보장하지 않으므로, 필요하다면 응용 프로그램 수준에서 신뢰성 있는 데이터 전송 기능을 구현해야 함 간단한 소켓 함수 호출 절차만 따르면 다자 간 통신을 쉽게 구현할 수 있음 TCP와 달리 응용 프로그램이 데이터 경계 구분을 위한 작업을 별도로 할 필요가 없음

UDP 서버-클라이언트 동작 원리 (1) UDP 서버-클라이언트 동작 원리 UDP 서버 UDP 클라이언트 #1 대기 통신

UDP 서버-클라이언트 동작 원리 (2) UDP 서버-클라이언트 동작 원리(계속) UDP 서버 UDP 클라이언트 #1 클라이언트 #2 통신 . . . 클라이언트 #n

UDP 서버-클라이언트 예제 (1) UDP 서버-클라이언트 예제 동작 UDP 클라이언트 UDP 서버 fgets() sendto() printf() recvfrom()

UDP 서버-클라이언트 예제 (2) UDP 서버-클라이언트 상태 ① 한 개의 UDP 서버와 한 개의 UDP 클라이언트 통신 (포트 번호:9000) (포트 번호:51835)

UDP 서버-클라이언트 예제 (3) UDP 서버-클라이언트 상태 ② 한 개의 UDP 서버와 두 개의 UDP 클라이언트 클라이언트 #1 클라이언트 #2 통신 (포트 번호:51835) (포트 번호:57385) (포트 번호:9000)

UDP 서버-클라이언트 분석 (1) 소켓 통신을 위해 결정해야 할 요소 ① 프로토콜 ② 지역 IP 주소와 지역 포트 번호 통신 규약. 소켓을 생성할 때 결정 ② 지역 IP 주소와 지역 포트 번호 서버 또는 클라이언트 자신의 주소 ③ 원격 IP 주소와 원격 포트 번호 서버 또는 클라이언트가 통신하는 상대의 주소

UDP 서버-클라이언트 분석 (2) 소켓 데이터 구조체 서버 클라이언트 응용 프로그램 운영체제 네트워크 수신 버퍼 지역 IP 주소 지역 포트 번호 원격 IP 주소 원격 포트 번호 클라이언트 응용 프로그램 운영체제 네트워크 • • • 수신 버퍼

UDP 서버-클라이언트 분석 (3) UDP 서버-클라이언트 모델 ① socket() bind() recvfrom() sendto() closesocket() UDP 서버 UDP 클라이언트 네트워크

UDP 서버-클라이언트 분석 (4) UDP 서버-클라이언트 모델 ② socket() bind() recvfrom() sendto() closesocket() send() recv() UDP 서버 UDP 클라이언트 네트워크 connect()

데이터 전송 함수 (1) sendto() 함수 응용 프로그램 데이터를 운영체제의 송신 버퍼에 복사함으로써 데이터를 전송 소켓의 지역 IP 주소와 지역 포트 번호가 아직 결정되지 않은 상태라면 운영체제가 자동으로 결정! int sendto ( SOCKET s, const char *buf, int len, int flags, const struct sockaddr *to, int tolen ) ; 성공: 보낸 바이트 수, 실패: SOCKET_ERROR

데이터 전송 함수 (2) sendto() 함수 사용 예 // 소켓 주소 구조체를 수신자의 IP 주소와 포트 번호로 초기화한다. SOCKADDR_IN serveraddr; ... // 송신용 버퍼를 선언하고 데이터를 넣는다. char buf[BUFSIZE]; // sendto() 함수로 데이터를 보낸다. retval = sendto(sock, buf, strlen(buf), 0, (SOCKADDR *)&serveraddr, sizeof(serveraddr)); if(retval == SOCKET_ERROR) 오류 처리; printf("%d바이트를 보냈습니다.\n", retval);

데이터 전송 함수 (3) recvfrom() 함수 운영체제의 수신 버퍼에 도착한 데이터를 응용 프로그램 버퍼에 복사 UDP 패킷 데이터를 한 번에 하나만 읽을 수 있음! int recvfrom ( SOCKET s, char *buf, int len, int flags, struct sockaddr *from, int *fromlen ) ; 성공: 받은 바이트 수, 실패: SOCKET_ERROR

데이터 전송 함수 (4) recvfrom() 함수 사용 예 // 통신 상대의 주소를 저장하기 위한 변수를 선언한다. SOCKADDR_IN peeraddr; int addrlen; // 수신용 버퍼를 선언한다. char buf[BUFSIZE]; // recvfrom() 함수로 데이터를 받는다. addrlen = sizeof(peeraddr); retval = recvfrom(sock, buf, BUFSIZE, 0, (SOCKADDR *)&peeraddr, &addrlen); if(retval == SOCKET_ERROR) 오류 처리; printf("%d바이트를 받았습니다.\n", retval);

UDP서버-클라이언트(IPv6) IPv4 코드 ⇒ IPv6 코드 ws2tcpip.h 헤더 파일을 포함 소켓 생성 시 AF_INET 대신 AF_INET6를 사용 소켓 주소 구조체로SOCKADDR_IN 대신SOCKADDR_IN6를 사용 구조체를 변경하면 구조체 필드명도 그에 따라 변경 서버에서 주로 사용하는 INADDR_ANY(0으로 정의됨) 값은 in6addr_any(0으로 정의됨)로 변경 IPv4만을 지원하는 주소 변환 함수를 IPv4/IPv6 지원 함수로 대체 데이터 전송 함수는 기존의 sendto( )/recvfrom( ) 함수를 변경 없이 그대로 사용

브로드캐스팅 (1) 통신에 참여하는 개체 간 상호 작용 유니캐스팅 브로드캐스팅 멀티캐스팅 애니캐스팅

브로드캐스팅 (2) 브로드캐스팅 개념 송신자가 보낸 데이터 하나를 다수의 수신자가 받는 방식 데이터 복사본을 여러 개 만들어 보내는 것이 아니므로 송신자 관점에서 보면 상당히 효율적인 기술임 송신자

브로드캐스팅 (3) 브로드캐스트 데이터를 보내기 위한 절차 ① 브로드캐스팅을 활성화함 BOOL bEnable = TRUE; retval = setsockopt(sock, SOL_SOCKET, SO_BROADCAST, (char *)&bEnable, sizeof(bEnable)); if(retval == SOCKET_ERROR) err_quit("setsockopt()");

브로드캐스팅 (4) 브로드캐스트 데이터를 보내기 위한 절차(계속) ② 브로드캐스트 주소로 데이터를 보냄 // 소켓 주소 구조체를 초기화한다. SOCKADDR_IN remoteaddr; ZeroMemory(&remoteaddr, sizeof(remoteaddr)); remoteaddr.sin_family = AF_INET; remoteaddr.sin_addr.s_addr = inet_addr("255.255.255.255"); remoteaddr.sin_port = htons(9000); // 송신용 버퍼를 선언하고 데이터를 넣는다. char buf[BUFSIZE]; ... // sendto() 함수로 데이터를 보낸다. retval = sendto(sock, buf, strlen(buf), 0, (SOCKADDR *)&remoteaddr, sizeof(remoteaddr)); if(retval == SOCKET_ERROR) 오류 처리; printf("%d바이트를 보냈습니다.\n", retval);

브로드캐스팅 (5) 브로드캐스트 주소의 종류 호스트 ID 11 . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 네트워크 ID 11 . . . . . . . . . . . . 1 네트워크 브로드캐스트 지역 브로드캐스트 11 . . . 1 서브넷 브로드캐스트 서브넷 ID

브로드캐스팅 (6) 브로드캐스트 주소의 종류(계속) 네트워크 브로드캐스트 서브넷 브로드캐스트 지역 브로드캐스트

Thank you www.hanb.co.kr TCP/IP 윈도우 소켓 프로그래밍