[파이썬] 클라이언트와 서버 소켓 생성

소켓(Socket)은 컴퓨터 네트워크에서 두 호스트 간의 양방향 통신을 가능하게 해주는 추상화된 프로그래밍 인터페이스입니다. 클라이언트와 서버 간의 소켓 통신을 설정하는 것은 실시간 데이터 전송이나 네트워크 기반 응용 프로그램을 개발하는 데 매우 중요합니다. 이번 글에서는 Python을 사용하여 클라이언트와 서버 소켓을 생성하는 방법에 대해 알아보겠습니다.

클라이언트 소켓 생성

Python에서 클라이언트 소켓을 생성하려면 socket 모듈을 사용합니다. 먼저, 클라이언트가 서버에 연결하고 통신을 수행할 소켓 객체를 생성해야 합니다. 다음은 클라이언트 소켓을 생성하는 예제 코드입니다.

import socket

# 서버의 IP 주소와 포트 번호를 지정
server_ip = "127.0.0.1"
server_port = 8000

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

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

위의 코드에서 socket.socket(socket.AF_INET, socket.SOCK_STREAM)은 인터넷 프로토콜(IP)을 사용하는 소켓을 생성하는 부분입니다. AF_INET은 IPv4를 사용하고, SOCK_STREAM은 TCP 소켓을 생성한다는 의미입니다.

client_socket.connect((server_ip, server_port))는 서버에 연결을 수행하는 부분입니다. server_ip는 서버의 IP 주소이고, server_port는 서버가 제공하는 포트 번호입니다.

서버 소켓 생성

Python에서 서버 소켓을 생성하려면 클라이언트 소켓과 유사한 방식을 사용합니다. 먼저, 서버 소켓을 생성하고 클라이언트의 연결 요청을 대기해야 합니다. 다음은 서버 소켓을 생성하는 예제 코드입니다.

import socket

# 서버의 IP 주소와 포트 번호를 지정
server_ip = "127.0.0.1"
server_port = 8000

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

# 포트 번호와 IP 주소를 소켓에 바인드
server_socket.bind((server_ip, server_port))

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

# 연결 요청이 수락되면 클라이언트 소켓과 주소 반환
client_socket, client_address = server_socket.accept()

위의 코드에서 server_socket.bind((server_ip, server_port))는 소켓을 지정된 IP 주소와 포트 번호와 바인드하는 부분입니다. server_ip는 서버의 IP 주소이고, server_port는 서버에서 사용할 포트 번호입니다.

server_socket.listen()은 클라이언트의 연결 요청을 대기하는 부분입니다. server_socket.accept()는 실제로 클라이언트의 연결 요청을 수락하고, 클라이언트 소켓과 주소를 반환하는 부분입니다.

결론

Python을 사용하여 클라이언트와 서버 소켓을 생성하는 방법을 살펴보았습니다. 위의 예제 코드를 참고하여 실제로 클라이언트와 서버를 구현하고 통신을 수행해 볼 수 있습니다. 소켓 프로그래밍 소개만으로는 제한적이므로 추가적인 공부와 실습을 통해 네트워크 프로그래밍에 익숙해지는 것이 좋습니다.