[파이썬] `socket`의 주요 메소드들

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 모듈은 위에서 소개한 메소드 외에도 다양한 기능을 제공합니다. 이 모듈의 메소드들을 사용하여 네트워크 통신을 구현할 수 있습니다. 더 자세한 내용은 공식 문서를 참조하시기 바랍니다.