안녕하세요 꼬로미입니다!
이번 포스팅에선 네트워크 프로그래밍과 소켓에 대한
기본 개념과 함수를 살짝 살펴보겠습니다
네트워크 프로그래밍이란?
소켓을 기반으로 프로그래밍하기에 소켓 프로그래밍이라고도 해요
네트워크로 연결된 둘 이상의 컴퓨터 사이에서의 데이터 송수신 프로그램의 작성을 의미하죠
소켓이란?
네트워크(인터넷)으로의 연결 도구예요
운영체제에 의해 제공이 되는 소프트웨어적인 장치이며
프로그래머에게 데이터 송수신에 대해 물리적, 소프트웨어적으로 작업소요를 신경쓰지 않게 해줍니다
소켓의 생성과정
소켓은 크게 두 종류가 있으며 그 중 하나인 TCP 소켓은 전화기와 비유할 수 있으며
전화를 받는 쪽과 거는 쪽의 차이도 있습니다
전화를 받는 쪽의 TCP 소켓의 생성과정
- 1단계 소켓 생성
- 2단계 IP주소와 포트번호를 할당하고
- 3단계 연결요청 가능상태로 변경하고
- 4단계 연결요청에 대한 수락
소켓은 이런 순서를 통해 흘러간답니다
위의 순서대로 함수를 한번 살펴볼게요
소켓의 생성
#include <sys/socket.h> int socket(int domain, int type, int protocol); |
IP와 포트번호 할당
#include <sys/socket.h> int bind(int sockdf, struct sockaddr *myaddr, socklen_t addrlen); |
연결요청 가능상태로 변경
#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); |
전화를 거는 소켓의 구현
위의 전화를 받는 소켓이 서버소켓, 리스닝소켓이라고도 불리며 전화를 거는 소켓은 클라이언트 소켓이라고도 불려요
클라이언트 소켓은 연결을 요청하는 함수를 사용하여 간단해요
연결을 요청
#include <sys/socket.h> int connect(int sockfd, struct sockaddr *serv_addr, socklen_t addrlen); |
f5i4laMTA4zaVqUe7XHUzDcoDb47oMIG7G5AQIq0eSI,
꼬로미의 글을 읽어주셔서 감사합니다
이런 차이가 있고 기본적인 개념을 알게되는 시간이었어요
'Study > Programming' 카테고리의 다른 글
안드로이드 프로그래밍 시작! 안드로이드 특징은? (0) | 2014.03.28 |
---|---|
윈도우 기반의 소켓관련 함수 (0) | 2014.03.25 |
윈도우기반으로 구현하기(헤더, 라이브러리 설정, 초기화) (0) | 2014.03.24 |
리눅스 기반의 파일조작함수! (0) | 2014.03.23 |
TCP/IP 소켓 프로그래밍! (0) | 2014.03.21 |