728x90
이 글은 윤성우의 열혈 TCP_IP프로그래밍 책을 공부하면서 쓰는 글 입니다.
소켓 프로그래밍은 전화기에 비유 할 수 있다.
전화기는 송 수신이 한번에 이루어지는 양방향 통신구조이지만 소켓은 그렇지 않다.
일단 전화기에 해당하는 소켓을 생성하는 함수이다.
#include <sys/socket.h>
int socket(int domain, int type, int protocol);
-> 성공 시 파일 디스크립터, 실패 시 -1반환
전화를 구입하면 전화국 직원이 가설도 해주고 전화번호도 할당해 주지만, 소켓은 우리가 직접 가설을 해야한다.
bind함수는 소켓에 주소정보를 할당하는 함수이다.
#include <sys/socket.h>
int bind(int sockfd, struct sockaddr *myaddr, socklen_t addrlen);
-> 성공 시 0, 실패 시 -1 반환
가설을 했으니 이제 전화를 받을 수 있는 상태로 만들어야 한다.
listen함수는 소켓이 연결요청 가능한 상태가 되게 해준다.
#include <sys/socket.h>
int listen(int sockfd, int backlog);
-> 성공 시 0, 실패 시 -1 반환
이제 전화벨이 울릴 수 있게 되었다.
전화벨이 울리면 수화기를 들어야 한다.
마찬가지로 소켓도 누군가가 송수신을 위해 연결 요청을 해오면, accept함수로 요청을 수락해야 한다.
#include <sys/socket.h>
int accept(int sockfd, struct sockaddr *addr, socklen_t *addrlen);
-> 성공 시 파일 디스크립터, 실패 시 -1 반환
따라서 기본적인 소켓의 생성 과정은 네 단계로 이루어져있다.
1. 소켓 생성 -> socket함수 호출
2. 주소 할당 -> bind 함수 호출
3. 요청상태 변경 -> listen함수 호출
4. 요청상태 수락 -> accept함수 호출
이제 전화를 걸 전화기가 있어야한다.
클라이언트에 주로 사용되는 함수이다.
#include <sys/socket.h>
int connect(int sockfd, struct sockaddr *serv_addr, socklen_t addrlen);
->성공 시 0, 실패 시 -1반환
728x90
'Study > TCP_IP' 카테고리의 다른 글
[TCP_IP] 소켓 프로그래밍 _ 윈도우 기반으로 구현하기 1 (0) | 2022.04.13 |
---|