[파이썬] `socket` 라이브러리 개요

Python은 네트워크 프로그래밍을 위해 기본적으로 socket 라이브러리를 제공합니다. socket 라이브러리는 네트워크 통신을 위한 소켓 API를 제공하여 다양한 네트워크 프로토콜을 지원합니다. 소켓은 컴퓨터 네트워크에서 두 프로그램 간의 통신을 가능하게 해주는 역할을 합니다.

소켓이란?

소켓은 컴퓨터 네트워크에서 프로세스간 통신을 가능하게 해주는 소프트웨어 인터페이스입니다. 소켓은 연결 지향 프로토콜(TCP)이나 비 연결 지향 프로토콜(UDP)을 통해 데이터를 주고받을 수 있습니다.

socket 라이브러리의 기능

socket 라이브러리는 다음과 같은 기능을 제공합니다:

  1. 소켓 생성(Creating Sockets): socket 모듈을 사용하여 소켓을 생성할 수 있습니다.
  2. 소켓 연결(Connecting Sockets): connect() 메서드를 사용하여 다른 호스트의 소켓에 연결할 수 있습니다.
  3. 데이터 전송(Sending Data): send() 메서드를 사용하여 데이터를 전송할 수 있습니다.
  4. 데이터 수신(Receiving Data): recv() 메서드를 사용하여 데이터를 수신할 수 있습니다.
  5. 소켓 종료(Closing Sockets): close() 메서드를 사용하여 소켓을 종료할 수 있습니다.
  6. 여러 소켓 동시 다루기(Managing Multiple Sockets): select 모듈을 사용하여 여러 소켓을 동시에 다룰 수 있습니다.

socket 라이브러리 사용 예제

다음은 socket 라이브러리를 사용하여 클라이언트와 서버 간에 간단한 통신을 수행하는 예제 코드입니다.

import socket

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

# 서버 주소와 포트 설정
server_address = ('localhost', 9999)

# 서버 소켓을 해당 주소와 포트에 바인딩
server_socket.bind(server_address)

# 클라이언트로부터의 연결 요청 대기
server_socket.listen(1)

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

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

# 수신한 데이터 출력
print('Received:', data)

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

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

위 예제는 클라이언트로부터 데이터를 수신받는 간단한 서버의 코드입니다. 서버 소켓을 생성하고 클라이언트의 연결 요청을 대기한 뒤, 연결이 수립되면 클라이언트로부터 데이터를 수신하고 출력합니다. 마지막으로 클라이언트 소켓과 서버 소켓을 종료합니다.

이와 같이 socket 라이브러리를 사용하여 네트워크 프로그래밍을 진행할 수 있습니다. socket 라이브러리는 다양한 기능을 제공하여 다양한 네트워크 통신 시나리오를 구현할 수 있도록 도와줍니다.