<Python> 소켓 통신

반응형

파이썬에서는 소켓(socket) 모듈을 사용하여 간단하게 네트워크 프로그래밍을 구현할 수 있습니다.

이 글에서는 파이썬으로 소켓 통신하는 방법에 대해 알아봅니다.

 

소켓이란?

 

소켓(socket)은 컴퓨터 네트워크에서 데이터를 주고 받기 위한 엔드 포인트입니다.

두 어플리케이션이 서로 데이터를 주고 받으려면, 그들의 끝점 즉, '소켓'으로 연결되어야 합니다.

 

TCP와 UDP

 

데이터 전송에는 대표적으로 2가지 방식인 TCP(Transmission Control Protocol)와 UDP(User Datagram Protocol)가 있습니다.

  • TCP: 신뢰성 있는 연결 지향형 프로토콜로 순서 보장 및 에러 확인과 같은 기능 제공
  • UDP: 비연결 지향형 프로토 콜롱느낸ㄹ 의미적 한 것처럼 데이터의 순서나 에러 확인이 보장되지 않음

 

파이썬 소켓 모듈 사용법

 

파이썬에서 소켓 통신을 위해 socket 모듈을 사용합니다. 이 모듈은 네트워크 작업에 필요한 메소드와 상수를 제공합니다. 다음 예제는 socket 모듈로 TCP 기반의 간단한 서버와 클라이언트 프로그램을 작성하는 방법입니다.

 

서버 코드 예제

import socket

# 소켓 객체 생성 (TCP)
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

# 주소 재사용 설정
server_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)

# IP 주소와 포트 번호 바인딩
server_socket.bind(('localhost', 12345))

# 연결 요청 대기
server_socket.listen(5)
print("Server is listening...")

while True:
    # 클라이언트 연결 수락 및 클라이언트 소켓 객체 생성
    client_socket, addr = server_socket.accept()
    print(f'Connected with {addr}')

    # 클라이언트로부터 데이터 수신 및 출력
    data = client_socket.recv(1024).decode()
    print(f"Received data from {addr}: {data}")

    # 연결 종료
    client_sock.close()

 

클라이언트 코드 예제

import socket 

client_sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 

client_sock.connect(('localhost', 12345)) 
print("Connected to server...") 

client_sock.send("Hello, Server!".encode()) 
print("Sent data to server...") 

client_sock.close()

 

파이썬의 소켓 모듈을 이용하여 네트워크 프로그래밍을 구현하는 방법에 대해 알아보았습니다.

소켓 통신은 서버와 클라이언트 간 데이터 교환의 기본 원리를 이해하고 활용할 수 있는 중요한 개념입니다.

기본적인 TCP 서버 및 클라이언트 예제를 통해 실습하며, 더 복잡한 네트워크 프로그래밍 과제에 대비할 수 있습니다.

Designed by JB FACTORY