본문 바로가기

Study/Programming

네트워크 프로그래밍 그리고 소켓생성과정, 함수!




안녕하세요 꼬로미입니다!


이번 포스팅에선 네트워크 프로그래밍과 소켓에 대한 

기본 개념과 함수를 살짝 살펴보겠습니다




네트워크 프로그래밍이란?

소켓을 기반으로 프로그래밍하기에 소켓 프로그래밍이라고도 해요

네트워크로 연결된 둘 이상의 컴퓨터 사이에서의 데이터 송수신 프로그램의 작성을 의미하죠




소켓이란?

네트워크(인터넷)으로의 연결 도구예요

운영체제에 의해 제공이 되는 소프트웨어적인 장치이며

프로그래머에게 데이터 송수신에 대해 물리적, 소프트웨어적으로 작업소요를 신경쓰지 않게 해줍니다




소켓의 생성과정

소켓은 크게 두 종류가 있으며 그 중 하나인 TCP 소켓은 전화기와 비유할 수 있으며

전화를 받는 쪽거는 쪽의 차이도 있습니다






전화를 받는 쪽의 TCP 소켓의 생성과정


 - 1단계  소켓 생성

 - 2단계  IP주소와 포트번호를 할당하고

 - 3단계  연결요청 가능상태로 변경하고

 - 4단계  연결요청에 대한 수락


소켓은 이런 순서를 통해 흘러간답니다

위의 순서대로 함수를 한번 살펴볼게요




소켓의 생성

 #include <sys/socket.h>

int socket(int domain, int type, int protocol);

socket함수로 소켓을 생성합니다




IP와 포트번호 할당

#include <sys/socket.h>

int bind(int sockdf, struct sockaddr *myaddr, socklen_t addrlen); 

bind함수로 생성한 소켓에 IP와 포트번호라는 소켓의 주소정보를 할당해요




연결요청 가능상태로 변경

 #include <sys/socket.h>

int listen(int sockfd, int backlog);

listen 함수를 사용하며 소켓 연결요청이 가능한 상태가 됩니다




연결요청 수락

 #include <sys/socket.h>

int accept(int sockfd, struct sockaddr *addr, socklen_t *adrlen);

accept 함수를 사용해 연결요청에 수락합니다







전화를 거는 소켓의 구현

위의 전화를 받는 소켓이 서버소켓, 리스닝소켓이라고도 불리며 전화를 거는 소켓은 클라이언트 소켓이라고도 불려요

클라이언트 소켓은 연결을 요청하는 함수를 사용하여 간단해요


연결을 요청

 #include <sys/socket.h>

int connect(int sockfd, struct sockaddr *serv_addr, socklen_t addrlen);




f5i4laMTA4zaVqUe7XHUzDcoDb47oMIG7G5AQIq0eSI,


꼬로미의 글을 읽어주셔서 감사합니다


이런 차이가 있고 기본적인 개념을 알게되는 시간이었어요