[파이썬] socket 소켓을 이용한 서버 전송 이벤트

소켓(Socket)이란?

소켓은 프로그래밍 언어를 통해 네트워크 통신을 하기 위해 사용되는 인터페이스입니다. 소켓을 이용하면 서버와 클라이언트 간에 데이터를 주고받을 수 있으며, 네트워크 기반의 애플리케이션을 개발하는 데 매우 유용합니다. 이 글에서는 Python의 내장 모듈인 socket을 사용하여 서버와 클라이언트 간에 데이터를 전송하는 예제를 살펴보겠습니다.

서버 코드 작성하기

아래는 Python에서 소켓을 이용하여 서버를 작성하는 예제 코드입니다.

import socket

# 서버의 IP 주소와 포트 번호 설정
server_ip = '127.0.0.1'
server_port = 12345

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

# 소켓 바인딩
server_socket.bind((server_ip, server_port))

# 클라이언트의 연결을 기다림
server_socket.listen()

# 클라이언트 연결 수락
client_socket, client_address = server_socket.accept()

# 클라이언트로부터 데이터 수신
data = client_socket.recv(1024).decode()

# 수신한 데이터 출력
print(f"Received data: {data}")

# 클라이언트 소켓 종료
client_socket.close()

# 서버 소켓 종료
server_socket.close()

위 코드는 socket 모듈을 import한 후, socket.socket() 함수를 사용하여 소켓을 생성합니다. 그리고 socket.bind() 함수를 사용하여 서버 IP 주소와 포트 번호를 설정합니다. 이후 socket.listen() 함수를 호출하여 클라이언트의 연결을 기다립니다. 클라이언트가 연결을 요청하면 socket.accept() 함수를 사용하여 연결을 수락합니다. 그리고 socket.recv() 함수를 통해 클라이언트로부터 데이터를 수신한 후, 수신한 데이터를 출력하고 클라이언트 소켓과 서버 소켓을 순차적으로 종료합니다.

클라이언트 코드 작성하기

이어서, Python에서 소켓을 이용하여 클라이언트를 작성하는 예제 코드입니다.

import socket

# 서버의 IP 주소와 포트 번호 설정
server_ip = '127.0.0.1'
server_port = 12345

# 소켓 생성
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

# 서버에 연결
client_socket.connect((server_ip, server_port))

# 데이터 전송
data = "Hello, Server!".encode()
client_socket.send(data)

# 클라이언트 소켓 종료
client_socket.close()

위 코드는 서버와 마찬가지로 socket 모듈을 import한 후, socket.socket() 함수를 사용하여 소켓을 생성합니다. 그리고 socket.connect() 함수를 사용하여 서버에 연결합니다. 이후 socket.send() 함수를 통해 서버로 데이터를 전송한 후, 클라이언트 소켓을 종료합니다.

실행 결과

위의 예제 코드를 실행하면, 서버가 클라이언트의 요청을 받고 특정 데이터를 전송하는 간단한 네트워크 통신이 이루어집니다. 클라이언트는 서버에게 “Hello, Server!”라는 데이터를 전송하고, 서버는 해당 데이터를 받아 출력합니다.

이와 같이 Python의 socket 모듈을 사용하면 손쉽게 서버와 클라이언트 간에 데이터를 전송하는 네트워크 애플리케이션을 개발할 수 있습니다.