Python에서 socket
모듈은 네트워크 통신을 위한 핵심적인 기능을 제공합니다. 이 모듈은 소켓 생성, 바인딩, 연결, 전송 및 수신과 같은 다양한 작업을 수행할 수 있는 메소드들을 제공합니다. 이 글에서는 socket
의 주요 메소드들을 살펴보겠습니다.
1. socket.socket()
socket.socket()
메소드는 새로운 소켓 객체를 생성합니다. 이 메소드는 주로 서버와 클라이언트 간의 연결을 설정하는데 사용됩니다. 예를 들어, 아래 코드는 TCP 소켓을 생성하는 방법을 보여줍니다.
import socket
# TCP 소켓 생성
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
2. socket.bind()
socket.bind()
메소드는 소켓에 IP 주소와 포트 번호를 바인딩합니다. 이 메소드를 사용하여 소켓을 특정 IP 주소와 포트 번호에 연결할 수 있습니다. 아래 코드는 로컬 호스트의 12345 포트에 소켓을 바인딩하는 예시입니다.
import socket
# 소켓 생성
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 로컬 호스트의 12345 포트에 소켓 바인딩
s.bind(('localhost', 12345))
3. socket.listen()
socket.listen()
메소드는 클라이언트의 연결을 수신하기 위해 소켓을 준비 상태로 만듭니다. 이 메소드를 사용하면 서버 소켓이 클라이언트의 연결을 기다릴 수 있습니다. 아래 코드는 최대 5개의 클라이언트 연결을 수신하기 위해 소켓을 준비하는 예시입니다.
import socket
# 소켓 생성
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 로컬 호스트의 12345 포트에 소켓 바인딩
s.bind(('localhost', 12345))
# 최대 5개의 클라이언트 연결 수신
s.listen(5)
4. socket.accept()
socket.accept()
메소드는 클라이언트의 연결 요청을 수락하고 소켓 객체와 연결된 클라이언트 주소를 반환합니다. 이 메소드는 socket.listen()
메소드와 함께 사용되며, 클라이언트와의 통신을 위해 새로운 소켓 객체를 생성할 수 있습니다. 아래 코드는 클라이언트의 연결을 수락하고 통신을 위한 새로운 소켓 객체와 클라이언트 주소를 반환하는 예시입니다.
import socket
# 소켓 생성
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 로컬 호스트의 12345 포트에 소켓 바인딩
s.bind(('localhost', 12345))
# 최대 5개의 클라이언트 연결 수신
s.listen(5)
while True:
# 클라이언트의 연결 요청 수락
client_socket, address = s.accept()
5. socket.connect()
socket.connect()
메소드는 서버에 대한 연결을 생성합니다. 이 메소드를 사용하여 클라이언트가 서버에 연결할 수 있습니다. 아래 코드는 로컬 호스트의 12345 포트에 연결하는 예시입니다.
import socket
# 소켓 생성
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 로컬 호스트의 12345 포트에 서버에 연결
s.connect(('localhost', 12345))
6. socket.send()
socket.send()
메소드는 소켓을 통해 데이터를 전송합니다. 이 메소드를 사용하여 클라이언트나 서버가 데이터를 송신할 수 있습니다. 아래 코드는 클라이언트가 서버로 메시지를 전송하는 예시입니다.
import socket
# 소켓 생성
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 로컬 호스트의 12345 포트에 서버에 연결
s.connect(('localhost', 12345))
# 메시지 전송
s.send(b'Hello, Server!')
7. socket.recv()
socket.recv()
메소드는 소켓으로부터 데이터를 수신합니다. 이 메소드를 사용하여 클라이언트나 서버가 데이터를 수신할 수 있습니다. 아래 코드는 서버가 클라이언트로부터 메시지를 수신하는 예시입니다.
import socket
# 소켓 생성
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 로컬 호스트의 12345 포트에 소켓 바인딩
s.bind(('localhost', 12345))
# 최대 5개의 클라이언트 연결 수신
s.listen(5)
while True:
# 클라이언트의 연결 요청 수락
client_socket, address = s.accept()
# 클라이언트로부터 메시지 수신
data = client_socket.recv(1024)
socket
모듈은 위에서 소개한 메소드 외에도 다양한 기능을 제공합니다. 이 모듈의 메소드들을 사용하여 네트워크 통신을 구현할 수 있습니다. 더 자세한 내용은 공식 문서를 참조하시기 바랍니다.