* 네트워크 프로그래밍
네트워크로 연결된 둘 이상의 컴퓨터 사이에서의 데이터 송수신 프로그램의 작성
소켓을 기반으로 프로그래밍을 해서 소켓프로그래밍이라고도 함
*소켓
네트워크 연결 도구
운영체제에 의해 제공되는 소프트웨어적인 장치 (unix 소켓, windows 소켓)
소켓은 프로그래머에게 데이터 송수신에 대한 물리적, 소프트웨어적 세세한 내용을 신경쓰지 않게함
*소켓을 전화에 비유
소켓은 socket함수의 호출을 통해서 생성
전화를 거는 용도의 소켓과 전화를 수신하는 용도의 소켓으로 구분됨
[전화를 수신하는 용도의 소켓] : 리스닝 소켓, 서버 소켓
- 소켓 생성
#include <sys/socket.h>
int socket(int domain, int type, int protocol);
성공 시 파일 디스크립터를 반환하고 실패 시 -1을 반환
- 소켓 주소 할당
전화기의 전화번호처럼 소켓에도 주소정보를 할당
소켓의 주소정보는 IP와 port번호로 구성 (port는 IP와 매칭해서 어플리케이션을 구분하는 거라고 함)
#include <sys/socket.h>
int bind(int sockfd, struct sockaddr "myaddr", socklen_t addrlen)
성공 시 0, 실패 시 -1 반환
- 연결
연결 요청이 가능한 상태의 소켓을 전화를 받을 수 있는 상태에 비유할 수 있음
전화를 거는 용도의 소켓은 연결요청이 가능한 상태가 될 필요는 없음
전화를 받는 용도의 소켓은 연결요청이 가능한 상태가 필요
#include <sys/socket.h>
int listen(int sockfd, int backlog);
성공 시 0, 실패시 -1 반환/ 소켓에 할당된 ip와 port번호로 연결요청이 가능한 상태가 됨
- 연결요청 수락
연결요청이 수락되어야 데이터 송수신이 양방향으로 가능
#include <sys/socket.h>
int accept(int sockfd, struct sockaddr* addr, socklen_t* addrlen);
성공 시 파일 디스크립터를 반환하고 실패 시 -1 반환
accept 함수 호출 이후에는 데이터의 송수신이 가능
단, 연결요청이 있을 때에만 accept 함수를 반환할 수 있음
소켓생성(socket함수) -> ip와 port번호 할당(bind함수)
-> 연결요청 가능상태로 변경(listem함수) ->연결요청 수락(accpet함수)
[전화를 거는 소켓]
소켓의 생성과 연결의 요청으로 구분
소켓의 생성은 서버 소켓처럼 socket함수를 사용하면 됨
-연결 요청
#include <sys/socket.h>
int connect(int sockfd, struct sockaddr* serv_addr, socklen_t addrlen);
성공 시 0, 실패 시 -1 반환
'CS > 컴퓨터 네트워크' 카테고리의 다른 글
4. 네트워크의 delay, loss, throughput (0) | 2020.04.07 |
---|---|
실습 1-3. 저수준 파일 입출력과 파일 디스크립터 (0) | 2020.04.07 |
실습 1-2. 서버소켓, 클라이언트소켓 구현 (0) | 2020.04.07 |
2. 네트워크 엣지 : 앤드 시스템, 엑세스 네트워크, 링크 (0) | 2020.04.07 |
1. 인터넷과 프로토콜 (0) | 2020.04.07 |