Python Socket

Happy_JG·2024년 3월 14일

Python

목록 보기
6/12

TCP 서버

서버는 클라이언트의 연결 요청을 기다리고, 요청이 들어오면 이를 수락하여 두 호스트 간의 통신 채널을 열어준다.

서버는 특정 포트에서 들어오는 연결 요청을 계속해서 청취(listen)한다. 이 포트는 서비스를 제공하는 애플리케이션을 식별하는 데 사용된다.

일반적으로 서버는 동시에 여러 클라이언트의 연결을 처리할 수 있어야 한다. 이를 위해 멀티스레딩 또는 비동기 처리 방법을 사용해야 한다.

서버는 연결이 수립되면 클라이언트와 데이터를 주고받는다. 이 데이터 전송은 연결이 유지되는
동안 양방향으로 이루어진다.

TCP 클라이언트

클라이언트는 서버에 연결을 요청하고, 연결이 수립되면 서버와 데이터를 주고받는다.

클라이언트는 특정 서버의 IP 주소와 포트 번호를 알고 있어야 한다. 이 정보를 사용하여 서버에 연결을 시도한다.
연결이 성공적으로 수립되면, 클라이언트는 서버와 데이터를 주고받을 수 있다. 데이터 전송이 완료되면, 클라이언트는 연결을 종료할 수 있다.
클라이언트는 통상적으로 사용자의 요청에 따라 동작하며, 서버에 연결을 요청한다.

차이점 요약

역할과 초기 동작
서버는 연결을 기다리는 측이며, 클라이언트는 연결을 요청하는 측.
동작 방식
서버는 특정 포트에서 연결 요청을 계속해서 청취하며, 클라이언트는 서버의 IP 주소와 포트 번호를 사용하여 서버에 연결을 시도한다.
용도
서버는 서비스를 제공하는 측이며, 클라이언트는 서비스를 사용하는 측.

  1. socket 모듈 임포트
import socket
  1. 서버나 클라이언트를 생성
# TCP 서버 생성
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

# TCP 클라이언트 생성
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

# UDP 서버 생성
server_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)

# UDP 클라이언트 생성
client_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)

socket.AF_INET는 IPv4주소 체계를 사용한다는 의미이고, SOCK_STREAM은 TCP 프로토콜을 사용한다는 의미이다. SOCK_DGRAM은 UDP 프로토콜을 사용한다는 뜻이다.

profile
hello!

0개의 댓글