열렬히.뛰기

1. 소켓과 친해지기

네트워크 > 소켓 프로그래밍 > 소켓 프로그래밍 > 1. 소켓과 친해지기

소켓이란?

  • 네트워크를 통해 통신하기 위한 도구
  • 일종의 전화기라고 생각해 보자. 거는 것과 받는 것이 필요할 것이다.
  • 실제 서버에 비유를 해보자면, 거는 것은 클라이언트, 받는 것은 서버가 될 것이다.

서버와 소켓

서버가 연결을 받으려면 필요한 절차 4가지.

  1. 소켓 생성
  2. ip 주소와 포트번호 할당
  3. 연결요청 가능 상태로 변경
  4. 연결요청 수락.
c
#include <sys/socket.h>

// 소켓 생성
// 성공 시 파일 디스크립터 반환. 실패 시 -1 반환
int socket(int domain, int type, int protocol);

// ip 주소와 port번호 할당
// 성공 시 0, 실패 시 -1 반환
int bind(int sockfd, strcut sockaddr *myaddr, socklen_t addrlen);

// 연결요청 가능상태로 변경 
// 성공 시 0, 실패 시 -1 반환
int listen(int sockfd, int backlog);

// 연결요청 수락
// 성공 시 파일 디스크립터 반환. 실패 시 -1 반환
int accept(int sockfd, strcut sockaddr *addr, socklen_t *addrlen);

클라이언트와 소켓

클라이언트가 연결을 걸려면 필요한 절차는 크게 2가지.

  1. 소켓 생성
  2. 연결요청을 진행
c
#include <sys/socket.h>

// 소켓 생성
// 성공 시 파일 디스크립터 반환. 실패 시 -1 반환
int socket(int domain, int type, int protocol);

// 연결 요청을 진행.
int connect(int sockfd, struct sockaddr *serv_addr, socklen_t addrlen);