<Python> 소켓 통신
- Developer/Python
- 2023. 8. 17.
반응형
파이썬에서는 소켓(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 서버 및 클라이언트 예제를 통해 실습하며, 더 복잡한 네트워크 프로그래밍 과제에 대비할 수 있습니다.
'Developer > Python' 카테고리의 다른 글
[Python] 설치부터 Hello World 출력 (0) | 2025.03.11 |
---|---|
<Python> 멀티 스레딩과 멀티 프로세싱 (0) | 2023.08.18 |
<Python> 클라우드 서비스와 파이썬 (0) | 2023.08.16 |
<Python> RESTful API 개발과 사용 (0) | 2023.08.16 |
<Python> SQLAlchemy 사용법 (0) | 2023.08.15 |