Department of Computer Science and Engineering

Slides:



Advertisements
Similar presentations
1 안드로이드 네트워킹 안드로이드 앱 프로그래밍 여 규리.
Advertisements

Network Lab. Byoung-Son, Choi
Understanding of Socket and File I/O
인공지능실험실 석사 2학기 이희재 TCP/IP Socket Programming… 제 11장 프로세스간 통신 인공지능실험실 석사 2학기 이희재
Chapter 06. UDP 서버/클라이언트.
Ch.07-5 xml-rpc 사용하기 김상엽.
Network Lab. Young-Chul Hwang
TCP Client/Server Program
Sockets Introduction and Protocol Setting
PHP입문 Izayoi 김조흔.
소켓 모델 주소 지정 in_addr_t inet_addr(const char *ip_address) 연결 지향 모델 (TCP)
TCP Client/Server Program
Network Lab. Seoung Hyeon, Lee
Department of Computer Science and Engineering
Multimedia & Mobile Communications Lab.
6장 비연결형 지향 프로토콜 Database Lab 강 우 석.
제 14장 Multicast & Broadcast
4장. 웹로직 서버상에서의 JDBC와 JTA의 운용
네트워킹 CHAPTER 13 Section 1 네트워킹의 개요와 java.net 패키지 Section 2 인터넷 주소와 URL
Department of Computer Engineering
한남대학교 컴퓨터공학과 컴퓨터 네트워크 실험실
Department of Computer Engineering
인공지능실험실 석사 2학기 이희재 TCP/IP Socket Programming… 제 7장 소켓 연결의 우아한 종료 인공지능실험실 석사 2학기 이희재
네트워크 프로그래밍 Yang-Sae Moon Department of Computer Science
Department of Computer Engineering
Chapter 21 Network Layer: ARP, ICMP (IGMP).
11장. 포인터 01_ 포인터의 기본 02_ 포인터와 Const.
고급 입출력 함수 School of Electronics and Information. Kyung Hee University.
Internet Address Conversion Functions
Department of Computer Engineering
Chapter 06. UDP 서버/클라이언트.
인공지능실험실 박사 1학기 장성만 TCP/IP Socket Programming… 9장 소켓의 다양한 옵션 인공지능실험실 박사 1학기 장성만
TCP/IP 응용 프로그램에 적용 가능한 다양한 소켓 옵션을 이해하고 활용한다.
메시지 큐[5] – test1.c 메시지 제어: msgctl(2) #include <sys/msg.h>
Understanding of Socket and File I/O
프로젝트 발표 순서 12/7(수), 팀 별 15분 발표순서 PPT (팀 별 이름, 구현 내용, 결과-그래프 포함) 각 기법당
Department of Computer Science and Engineering
MicroC/OS-II 3. Memory Management ITISN Technical Lab.
13장 고급 입출력 함수 박사 4학기 최 성자.
TCP/IP Socket Programming…
14장. 포인터와 함수에 대한 이해.
Socket Address Structure and Byte Ordering Functions
Internet Address Conversion Functions
Socket Address Structure and Byte Ordering Functions
Department of Computer Engineering
Chapter 5 UDP Socket 소켓 프로그래밍.
I/O&socket통신 POWERPOINT & GROUP STUDY 한재희 김상훈 최기람 황인준 이어진.
Sockets Introduction and Protocol Setting
TCP/IP 응용 프로그램에 적용 가능한 다양한 소켓 옵션을 이해하고 활용한다.
Internet Address Conversion Functions
Department of Computer Engineering
뇌를 자극하는 Windows Server 장. 원격 접속 서버.
Internet 데이터 전송 목표: 인터넷의 개요 및 기본 내용을 살펴보고 VB에서의 데이터 전송 프로그래밍에 대하여 학습한다. 주요내용 인터넷의 개요 인터넷 데이터 전송 인터넷 프로그래밍 Winsock Client Server 프로그래밍.
School of Electronics and Information. Kyung Hee University.
Department of Computer Engineering
Network 네트워크 이론 및 실습 TCP / IP 4장.
Department of Computer Engineering
Department of Computer Engineering
Understanding of Socket and File I/O
다중처리 기술 School of Electronics and Information. Kyung Hee University.
Chapter 04. TCP 서버/클라이언트.
MIDP 네트워크 프로그래밍 ps lab 김윤경.
Department of Computer Engineering
바이트 순서 변환 함수 주소 변환 함수 바이트 조작 함수 원격지 호스트 정보를 얻는 함수
Department of Computer Engineering
06. 디바이스의 등록과 해제 김진홍
Network Lab. Young-Chul Hwang
Completion Port기반의 채팅프로그램
Department of Computer Science and Engineering
Department of Computer Engineering
Presentation transcript:

Department of Computer Science and Engineering UDP Server/Client Department of Computer Science and Engineering Kyung Hee University. Choong Seon Hong

Remind of Connection-Oriented and Connectionless Server Connection-Oriented Service 종점간 연결 설정/해제, 데이터 송수신 등 세 단계의 절차를 거침 주로 TCP를 이용하여 작성 데이터의 안정적인 전달을 보장 (flow control) TCP 프로토콜, telnet, ftp 등 각 클라이언트마다 연결을 개설 클라이언트 수가 증가하면 서버에 부담이 클 수 있음 Connectionless Service 종점간 연결 설정/해제 작업 없이 바로 데이터를 주고 받는 방식 주로 UDP를 이용하여 작성 안정적인 데이터 전달을 보장하지 않으므로 응용 프로그램에서 처리 클라이언트마다 연결을 설정할 필요가 없음 서버의 부담이 적음 (메모리 사용 등) 방송형, 멀티캐스팅형 서비스에 적합

UDP Program UDP (비연결형) 소켓 프로그래밍 절차 TCP와 달리 일 대 일 통신에만 사용되지 않음 비연결형 소켓 일반적으로 연결 설정 과정을 거치지 않음 데이터를 위한 소켓은 하나만 개설 소켓 개설 후 바로 상대방과 데이터를 송수신 Server Client socket() bind() recvfrom() sendto() close() 데이터 송수신 종료

UDP 기반의 데이터 입출력 함수 데이터 전송 함수  주소 정보를 포함해서 데이터를 전송하는 함수 sock: 데이터를 전송할 때 사용할 소켓의 파일 디스크립터 msg: 전송하고자 하는 데이터를 저장해 놓은 버퍼를 가리키는 포인터 len: msg 포인터가 가리키는 위치에서부터 몇 바이트를 전송할 것인지의 크기 flags: 옵션을 설정하는데 필요한 인자. 일반적으로 0. addr: 전송하고자 하는 곳의 주소 정보 addrlen: addr 포인터가 가리키고 있는 구조체 변수의 크기 int sendto(int sock, const void* msg, int len, unsigned flags, const struct sockaddr * addr, int addrlen)

UDP 기반의 데이터 입출력 함수 데이터 수신 함수  데이터가 전송된 위치 정보를 얻을 수 있는 기능 제공 sock: 데이터를 수신할 때 사용할 소켓의 파일 디스크립터 buf: 수신할 데이터를 저장할 버퍼를 가리키는 포인터 len: 수신할 수 있는 최대 바이트 수 flags: 옵션을 설정하는데 필요한 인자. 일반적으로 0. addr: 주소 정보 구조체 변수의 포인터. 함수 호출이 끝나면, 데이터를 전송한 호스트의 주소 정보로 채워짐 addrlen: addr 포인터가 가리키고 있는 구조체 변수의 크기 int recvfrom(int sock, int * buf, int len, unsigned flags, struct sockaddr * addr, int * addrlen)

UDP 에코 서버/클라이언트 프로그램 예제 uecho_server.c, uecho_client.c 실행결과

데이터 경계가 존재하는 UDP 소켓 한쪽이 sendto()를 호출했으면 이 데이터를 받기 위해서 상대방은 반드시 recvfrom()을 호출해야 함 TCP 소켓에서는 스트림을 이용하므로 write()나 send()로 연속하여 쓰기를 수행하거나 read()나 recv()로 연속하여 읽기를 해도 문제가 되지 않음 UDP에서는 sendto() 와 recvfrom() 호출이 서로 짝을 이루도록 순서가 맞아야 함 Server Client 세 번에 걸쳐 메시지 전송 MSG 1 MSG 2 MSG 3 세 번에 메시지 수신 후 세 번에 메시지 전송 MSG 1 MSG 2 세 번에 걸쳐서 메시지 수신 MSG 3

예제 확인 프로그램 예제 becho_server.c becho_client.c 실행결과

TCP 기반에서 connect 함수 호출 시 내부 상황 IP와 Port의 할당. 연결 요청 진행(Three-way handshaking) 커널과 소켓의 연결 생성. TCP 기반 HOST Connect 호출 시 연결 생성 커널(kernel) socket Host

UDP 기반에서 connect 함수 호출 시 내부 상황 IP와 Port의 할당 connect 함수를 호출하지 않는 UDP 클라이언트의 데이터 송 수신 UDP 기반 Host 커널(kernel) socket Host sendto, recvfrom 호출 중  호출 후 sendto, recvfrom 호출 전  호출 중 UDP 기반 Host 커널(kernel) socket Host

Connected UDP connect 함수 호출을 하지 않으면 IP와 Port는 언제 할당 되는가? Connected UDP sendto 함수 호출 시 Connected UDP connect() 함수를 호출해서 IP와 Port를 소켓에 할당해 놓음 sendto()로 데이터를 전송하는 순간 소켓과 커널이 내부적으로 연결 커널은 인자로 받은 소켓주소와 UDP 소켓을 내부적으로 연결해 두고 계속 유지함 TCP와 같이 3-way 핸드쉐이크 연결설정이 이루어지지 않음 UDP 소켓을 통해서 처리속도 향상을 위해 사용 가능 유의사항 잘못된 IP 주소를 인자로 주어도 connect()에서 에러가 발생하지 않음 (3-way 핸드쉐이크가 수행되지 않기 때문) 연결된 UDP의 고정된 통신 상대를 connect()로 변경 가능  데이터를 주고 받는 속도가 빨라진다.  TCP 소켓 기반의 데이터 입 출력 함수를 그대로 사용 할 수 있다. read(), write()

성능이 향상된 UDP echo client 프로그램 예제 cecho_ client.c,

실습과제 #3 daytime service와 host정보를 제공해주는 UDP 서버프로그램과 UDP 클라이언트 프로그램을 작성하시오. 코드명: info_server.c, infor_client.c 실행 예 ./info_client 163.180.118.99 3333 Input: time => Today is 2015/10/07. Input: 163.180.96.54 => Host name is nms2.kyunghee.ac.kr.