TCP/IP( 소켓 프로그래밍) 소켓통신이란

    네트워크 프로그래밍이란

     

    - 소켓을 기반으로 프로그래밍을 하기 때문에 소켓 프로그래밍이라고 한다.

    - 네트워크로 연결된 장치들의 데이터 송수신 프로그램의 작성을 의미함

     

    전화를 이용한 설명

     

    (1) 전화 받는 소켓의 생성  ex) int socket (~~);

    - 소켓은 전화기로 생각하면 쉽다.

    -   "      socket함수 호출로 생성한다.

     

    (2)  전화번호의 부여       ex) int bind (~~);

    - 소켓의 주소할당 및 연결

    -    "      주소 정보는 IP와 PORT번호로 구성된다.

     

    (3)  전화기 연결           ex) int listen(~~);

    - 연결요청이 가능한 상태의 소켓 (걸려오는 전화를 받을 수 있는 상태)

    - 전화를 거는 소켓은 연결 요청 가능 소켓이 될 필요가 없다. (걸려오는 전화를 받는 소켓에서 필요한 상태이므로)

     

    (4) 전화 연결요청 수락  (전화오면 수화기 드는 거)              ex) int accept(~~);

    - 연결 요청 수락되면 데이터 송 수신 가능 (양방향 가능)

     

     

    간략하게

    1단계  소켓 생성                                                       socket함수 호출

    2단계   IP와 PORT번호 할당                                         bind 함수 호출

    3단계   걸려오는 전화를 받을 수 있는 상태로 변경            listen 함수 호출

    4단계   연결 요청에 대한 수락                                     accept함수 호출

     

    이렇게 생성된 소켓을  서버 소켓 OR 리스닝 소켓이라고 한다.

     

     

     

    이제 전화를 거는 소켓을 구현해보자  (연결을 요청하는 소켓)

    - 연결을 요청하는 소켓은 리스닝 소켓과 다르게 간단하다.          

    - 소켓의 생성과 연결의 요청 (  ex) int connect(~~);  )으로 구분된다.

     이것을 클라이언트 소켓이라고 한다.

     

     

    실행 방법

    127.0.0.1을 빼고 본인 ip를 입력하셔도 됩니다.

     

    소켓의 타입

    (1) 연결 지향형 소켓(SOCK_STREAM) 특징   ( int tcp_socket = socket (PF_INET, SOCK_STREAM, IPPROTO_TCP);

    - 중간에 데이터가 소멸되지 않음

    - 순차적으로 수신된다.

    - 데이터 경계가 없다.

    - 소켓대 소켓 연결은 무조건 1대1

     

    (2) 비연결 지향형 소켓(SOCK_DGRAM 특징  ( int udp_socket = socket (PF_INET, SOCK_DGRAM, IPPROTO_UDP);

    - 순서 상관없이 빠른 전송속도지향

    - 데이터 손실 우려 있음

    - 데이터의 경계가 존재한다.

    - 전송시 데이터의 크기가 제한된다.

     

     

    예시)

     

     

    궁금하신 사항이 있다면 언제든 댓글 혹은 카톡 주세요

    https://open.kakao.com/o/gf91kAmb

    댓글

    Designed by JB FACTORY