[python] 파이썬에서 키 입력을 이용한 네트워크 통신하기

이번에는 파이썬에서 키 입력을 이용하여 네트워크 통신을 하는 방법을 알아보겠습니다.

소켓 프로그래밍 이해하기

네트워크 통신을 위해 소켓 프로그래밍이 필요합니다. 소켓은 컴퓨터 간의 네트워크 통신을 담당하는 인터페이스입니다. 파이썬에서는 socket 모듈을 사용하여 소켓 프로그래밍을 할 수 있습니다.

import socket

서버 구현하기

우선 서버를 구현해야 합니다. 서버는 클라이언트로부터 연결 요청을 받아들이고, 데이터를 주고받기 위한 소켓을 생성합니다. 아래는 간단한 예제 코드입니다.

import socket

# 서버 IP와 포트 설정
HOST = '127.0.0.1'
PORT = 12345

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

# 소켓을 IP와 포트에 바인딩
server_socket.bind((HOST, PORT))

# 클라이언트의 연결 요청을 대기
server_socket.listen()

print('Server is listening on {}:{}'.format(HOST, PORT))

# 클라이언트와 연결된 소켓과 주소 정보 가져오기
client_socket, addr = server_socket.accept()
print('Connected by', addr)

# 클라이언트로부터 데이터를 받아서 그대로 보내기
while True:
    data = client_socket.recv(1024)
    if not data:
        break
    client_socket.sendall(data)

# 연결된 소켓 종료
client_socket.close()

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

클라이언트 구현하기

서버와 마찬가지로 클라이언트도 소켓을 생성하여 서버에 연결합니다. 아래는 간단한 예제 코드입니다.

import socket
import sys

# 서버 IP와 포트 설정
HOST = '127.0.0.1'
PORT = 12345

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

# 서버에 연결
try:
    client_socket.connect((HOST, PORT))
except:
    print('Failed to connect')
    sys.exit()

print('Connected to {}:{}'.format(HOST, PORT))

# 키 입력을 받아서 서버로 데이터 전송
while True:
    message = input('Enter message to send: ')
    client_socket.sendall(message.encode())

    # 서버로부터 응답 받기
    data = client_socket.recv(1024)
    if not data:
        break
    print('Received:', data.decode())

# 소켓 종료
client_socket.close()

위의 코드를 실행하면 클라이언트에서 키 입력을 받아 서버에 전송하고, 서버는 받은 데이터를 그대로 클라이언트에게 돌려줍니다.

마무리

이번에는 파이썬에서 키 입력을 이용하여 네트워크 통신하는 방법을 알아보았습니다. 소켓 프로그래밍을 통해 서버와 클라이언트 간의 데이터를 주고받을 수 있습니다. 네트워크 통신은 다양한 애플리케이션에서 사용되므로, 실제로 응용할 때에는 보안 및 오류 처리 등을 고려해야 합니다.