12. 소켓을 이용한 네트워크 프로그래밍

윤주원·2023년 7월 20일
0

컴퓨터 네트워크

목록 보기
12/15
post-thumbnail

소켓

  • 개념

세가지 관점

  • 데이터 타입
  1. 생성
  2. 받기
  3. 보내기
  • 통신 종단점
    : 응용 프로그램은 자신의 소켓이 상대편의 소켓과 연결된 것이라고 생각

  • 네트워크 프로그래밍 인터페이스
    : TCP/IP 프로토콜에서 응용계층과 전송 계층 사이에 위치하는 것으로 간주

오류 처리 유형

  1. 오류를 처리할 필요가 없는 경우
  • 리턴값이 없거나 호출 시 항상 성공하는 일부 소켓 함수
  1. 리턴값만으로 오류를 처리하는 경우
  • WSAStartup( ) 함수
  1. 리턴값으로 오류 발생을 확인하고, 구체적인 내용은 오류코드로 확인하는 경우
  • 대부분의 소켓 함수

TCP 서버 – 클라이언트 구조

  • 웹 서버 & 클라이언트 동작

  • TCP 서버 & 클라이언트 핵심 동작

  • 하나의 서버에 여러가지 클라이언트 통신

  • 예제 동작

TCP 서버 함수

  • bind( ) 함수
    : bind( ) 함수는 소켓의 지역 IP주소와 지역 포트 번호를 결정

  • listen( ) 함수
    : listen( ) 함수는 소켓의 TCP 상태를 listening으로 변경

  • accept( ) 함수
    : accept( ) 함수는 클라이언트의 접속을 수용하고, 접속한 클라이언트와 통신할 수 있는 새로운 소켓을 생성하여 리턴

  • connect( ) 함수
    : connect( ) 함수는 TCP 프로토콜 수준에서 서버와 논리적 연결을 설정

  • send( ) 함수
    : send( ) 함수는 응용 프로그램의 데이터 전송을 위해 운영체제의 송신 버퍼에 데이터를 복사하고 리턴

  • recv( ) 함수

  • recv( ) 함수는 운영체제의 수신 버퍼에 도착한 데이터를 응용 프로그램 버퍼에 복사하고 리턴

여러 환경에서의 함수

  • 기본이 되는 함수는 send( ) 함수, recv( ) 함수
  • UDP에서 주로 사용하는 sendto( ) 함수, recvfrom( ) 함수
  • 윈도우 전용 함수로 WSASend( ), WSARecv ( ) 확장 함수
  • 리눅스 전용 함수로 write( ) 함수, read( ) 함수

TCP와 UDP 통신 절차

  • TCP
  • UDP
profile
안녕하세요

2개의 댓글

comment-user-thumbnail
2023년 7월 20일

뛰어난 글이네요, 감사합니다.

1개의 답글