Download presentation
Presentation is loading. Please wait.
1
네트워크 프로그래밍의 이해 School of Electronics and Information.
Kyung Hee University. Dae Sun Kim
2
실습서버 zterm 사용 ID 실습날짜 폴더를 만들어 사용 163.180.140.190 (임시) Port:22
np01 ~ np59( ID, Password 동일, Password 반드시 수정) 실습날짜 폴더를 만들어 사용 Ex)
3
네트워크의 이해 네트워크란 End-System 들을 연결하는 하나의 System을 의미한다.
개인용 PC, 워크스테이션, PDA
4
Internet의 이해 멀리 떨어진 둘 이상의 네트워크가 연결되어 이뤄지는 거대한 네트워크를 의미한다.
인터넷의 구축을 위해서는 서로 다른 네트워크를 연결하는 장비가 필요하다. 이를 두고 라우터(Router)라 한다. Network A Router Network B
5
Client / Server 모델 Server Client Server와 Client는 프로그램이다. Machine이 아니다!
Request Response Server Client
6
Server의 종류 Server는 일반적으로 Client에 비해 복잡하다. 두 가지 종류의 서버.
Iterative Server : 한 순간에 하나의 클라이언트에게 응답한다. Concurrent Server : 동시에 여러 클라이언트에게 응답한다. Client Server Server Client Client Client
7
네트워크 프로그래밍의 이해 네트워크로 연결되어 있는 두 호스트간의 데이터 송수신.
파일 입출력과의 차이점은 데이터를 주고 받는 대상에 있다. 소켓(socket)이라는 장치를 사용하여 프로그래밍 한다. 소켓이란 원격에 존재하는 두 호스트를 연결시켜 주는 매개체 역할을 한다.
8
서버 소켓 구현의 이해 Telephone Server Socket 전화기 구입 전화번호 할당 케이블에 연결 수화기 든다!
소켓 생성 IP 주소 할당. 연결 요청 대기 상태 연결 수락!
9
서버 소켓 구현의 이해 순서 1. 전화를 걸고 싶은데 무엇이 필요합니까 #include <sys/types.h>
순서 1. 전화를 걸고 싶은데 무엇이 필요합니까 소켓의 생성을 요구한다. #include <sys/types.h> #include <sys/socket.h> int socket (int domain, int type, int protocol)
10
서버 소켓 구현의 이해 순서 2. 당신의 전화번호는 어떻게 되나요? #include <sys/socket.h>
순서 2. 당신의 전화번호는 어떻게 되나요? 주소의 할당을 요구한다(IP 주소, Port 정보). #include <sys/socket.h> int bind(int sockfd, struct sockaddr *myaddr, int addrlen)
11
서버 소켓 구현의 이해 순서 3. 전화기를 연결 하시겠습니까? #include <sys/socket.h>
순서 3. 전화기를 연결 하시겠습니까? 연결 요청 대기 상태로의 진입. #include <sys/socket.h> int listen(int sockfd, int backlog)
12
#include <sys/socket.h>
순서 4. 전화벨이 울립니다. 어서 전화 받으세요!!! 연결 요청 수락. #include <sys/socket.h> int accept(int sockfd, struct sockaddr *addr, int *addrlen)
13
클라이언트 소켓 구현의 이해 순서 1. 전화를 걸고 싶은데 무엇이 필요합니까? 순서 2. 전화를 걸어요
순서 1. 전화를 걸고 싶은데 무엇이 필요합니까? 소켓의 생성 순서 2. 전화를 걸어요 연결 요청 #include <sys/socket.h> int connect(int sockfd, struct sockaddr *serv_addr, int addrlen)
14
“Hello World!” 서버 / 클라이언트
프로그램 예제 helloworld_server.c, helloworld_client.c 실행하기
15
파일의 조작
16
저 수준 파일 입출력(Low-Level File Access)
리눅스 혹은 윈도우즈 자체에서 제공해 주는 파일 입출력 함수를 사용하여 파일을 관리( 파일의 생성 및 삭제, 데이터 입력 및 출력)하는 것을 의미함. 리눅스에서는 모든 것을 파일로 관리한다. -파일, 소켓, 표준 입력, 표준 출력. 파일에 파일 디스크립터를 할당해서 관리(파일 디스크립터는 정수)
17
파일 디스크립터(File Descriptor)
파일을 관리하기 위해서 모든 파일(파일, 소켓 표준 입력, 표준 출력)에 파일 디스크립터를 할당 해 준다. 파일 디스크립터 대 상 표준 입력 1 표준 출력 2 표준 에러 출력 Operating System Program 파일 A 5 소켓 B 소켓 C 7 파일 D
18
File open 및 close MODE 의 미 O_CREAT 필요한 경우 파일을 생성 O_TRUNC
#include <fcntl.h> #include <sys/types.h> #include <sys/stat.h> int open(const char *path, int flag); #include <unistd.h> int close(int fildes); MODE 의 미 O_CREAT 필요한 경우 파일을 생성 O_TRUNC 존재하던 데이터를 모두 삭제 O_RDONLY 읽기 전용 모드로 파일을 오픈
19
Data read & write #include <unistd.h>
ssize_t write(int fildes, const void * buf, size_t nbytes); #include <unistd.h> ssize_t read(int fildes, void *buf, size_t nbytes);
20
예제 확인 프로그램 예제 low_open.c, low_read.c, fd_seri.c 실행하기
Similar presentations