소켓(socket, bind, listen, accept, connect, close)

김건우·2023년 11월 17일
1

소켓 프로그래밍은 네트워크 통신을 가능하게 하는 중요한 부분입니다. 소켓은 네트워크 상에서 서로 다른 시스템 간에 데이터를 교환할 수 있게 해주는 엔드포인트입니다. 주로 TCP/IP 프로토콜을 사용하여 통신합니다. 소켓 프로그래밍의 주요 단계와 함수들에 대해 설명하겠습니다.

1. Socket 생성

  • socket(): 네트워크 통신을 위한 소켓을 생성합니다. 이 함수는 소켓을 식별하는 소켓 디스크립터를 반환합니다.
    • 예: sock = socket(AF_INET, SOCK_STREAM)

2. 주소 할당 (서버 측)

  • bind(): 소켓에 특정 주소(IP 주소와 포트 번호)를 할당합니다. 서버 측에서 사용합니다.
    • 예: bind(sock, (host, port))

3. 연결 수신 대기 (서버 측)

  • listen(): 서버가 클라이언트의 연결 요청을 기다리도록 설정합니다. 이 함수는 연결 대기 큐의 크기를 지정합니다.
    • 예: listen(sock, backlog)

4. 연결 수락 (서버 측)

  • accept(): 클라이언트의 연결 요청을 수락합니다. 이 함수는 새로운 소켓을 반환하는데, 이 새로운 소켓은 클라이언트와의 통신에 사용됩니다.
    • 예: client_sock, addr = accept(sock)

5. 연결 요청 (클라이언트 측)

  • connect(): 클라이언트가 서버에 연결을 요청합니다. 서버의 주소 정보가 필요합니다.
    • 예: connect(sock, (host, port))

6. 소켓 닫기

  • close(): 사용이 끝난 소켓을 닫습니다. 이는 리소스를 해제하고, 더 이상의 데이터 전송을 중단합니다.
    • 예: close(sock)

추가 정보

  • TCP와 UDP: 소켓 프로그래밍은 주로 TCP (신뢰성 있는 연결 지향적 통신) 또는 UDP (비연결형, 신뢰성 없는 통신)를 사용합니다.
  • IP 주소와 포트 번호: IP 주소는 네트워크 상의 장치를 식별하는 데 사용되며, 포트 번호는 해당 장치 내에서 특정 프로세스를 식별하는 데 사용됩니다.

네트워크 프로그래밍, 특히 소켓 프로그래밍을 이해하고 숙달하는 것은 프로그래밍 능력을 향상시키는 데 큰 도움이 됩니다.

profile
정글 3기

3개의 댓글

comment-user-thumbnail
2023년 11월 21일

👏😎

1개의 답글