파이썬 소켓서버 예제

간단한 소켓서버 구현예제. 여기서 send 하는 내용을 HTTP 규격에 맞춰서 보내면 웹 브라우저로 접속해서 볼 수 있게 된다. 웹서버를 직접 구현해보고자 한다면 출발점은 소켓서버 구현 -> HTTP 프로토콜 이해 -> 소켓서버를 웹서버로 확장하는 방식으로 발전시켜 나갈 수 있다. 하지만 파이썬에서는 이미 HTTP 서버 모듈도 존재하고 이는 꽤 쓸만하므로 따로 만드는 건 삽질이다. (뭐 좋은 경험은 될 수 있겠지만…)

#-*-coding:utf-8
#!c:/python33/python.exe

""" echo server 
"""

import socket

def main():
    listen_sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    listen_sock.bind(('', 8080))
    listen_sock.listen(1)

    while 1:
        conn, addr = listen_sock.accept()
        data = conn.recv(1024)
        conn.sendall("""HTTP/1.1 200 OK


        <html><body><h1>hello!</h1></body></html>""".encode('utf-8'))
        conn.close()
main()