[python] 소켓 프로그래밍을 이용한 HTTP 서버 개발
이번 포스팅에서는 Python을 사용하여 간단한 HTTP 서버를 만드는 방법에 대해 알아보겠습니다.
HTTP와 소켓 프로그래밍
HTTP는 웹 서버와 클라이언트 간의 통신을 위한 프로토콜입니다. 소켓 프로그래밍을 통해 HTTP 요청과 응답을 수신하고 전송할 수 있습니다.
간단한 HTTP 서버 구현
다음은 Python의 소켓 모듈을 이용하여 간단한 HTTP 서버를 구현하는 예제 코드입니다.
import socket
def main():
host = '' # 모든 인터페이스에서 요청을 받아들이기 위해 빈 문자열을 사용합니다.
port = 8080 # 사용할 포트 번호를 지정합니다.
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 소켓 생성
server_socket.bind((host, port)) # 호스트와 포트를 바인딩합니다.
server_socket.listen(1) # 클라이언트의 연결 요청을 기다립니다.
print(f'HTTP 서버가 {port} 포트에서 실행 중입니다.')
while True:
client_socket, client_address = server_socket.accept() # 클라이언트 연결 대기
request = client_socket.recv(1024).decode() # 클라이언트로부터 요청을 받습니다.
print(f'요청 받음:\n{request}')
# 응답 전송
response = 'HTTP/1.1 200 OK\n\nHello, World!' # 간단한 응답
client_socket.sendall(response.encode()) # 클라이언트에게 응답을 전송합니다.
client_socket.close() # 연결 종료
if __name__ == '__main__':
main()
실행 및 테스트
위 코드를 실행한 후 웹 브라우저에서 http://localhost:8080
을 입력하여 접속하면 “Hello, World!” 메시지가 표시됩니다.
추가적인 기능
간단한 예제이지만 여기에는 HTML 파일을 응답으로 보내거나, 요청에 따라 다른 응답을 반환하도록 서버를 확장하는 등의 추가적인 기능을 구현할 수 있습니다.
이렇게 Python의 소켓 프로그래밍을 이용하여 간단한 HTTP 서버를 만들 수 있습니다. HTTP와 소켓 프로그래밍에 대한 이해를 토대로 더 복잡하고 실용적인 서버를 개발할 수 있을 것입니다.