一个简单的WebServer,socket+threading

Posted sfencs-hcy

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一个简单的WebServer,socket+threading相关的知识,希望对你有一定的参考价值。

一个简单的WebServer


import socket
import threading

body = ‘<h1> web server </h1>‘

response_params = [
    ‘HTTP/1.0 200 OK‘,
    ‘Content-Type: text/html;charset=utf-8‘,
    ‘Content-Length: \\r\\n‘.format(len(body.encode())),
    body,
]

response = ‘\\r\\n‘.join(response_params)

def handle(conn):
    request = ‘‘
    while ‘\\n\\n‘ not in request and ‘\\n\\r\\n‘ not in request:
        request += conn.recv(1024).decode()
    print(request)
    conn.send(response.encode())
    conn.close()

if __name__ == ‘__main__‘:
    sk = socket.socket(socket.AF_INET, socket.SOCK_STREAM, 0)
    address = ("127.0.0.1", 8001)
    sk.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1) # 端口复用
    sk.bind(address)
    sk.listen(5)
    sk.setblocking(0) # 非阻塞
    try:
        while True:
            try:
                conn,addr = sk.accept()
            except socket.error as e:
                continue
            t = threading.Thread(target=handle,args=(conn,))
            t.start()
    finally:
        sk.close()

浏览器访问显示WebServer,服务端输出request

?

以上是关于一个简单的WebServer,socket+threading的主要内容,如果未能解决你的问题,请参考以下文章

自主WebServer实现

如何用socket构建一个简单的Web Server

也谈如何写一个Webserver

Python实现简单Web服务器

使用NanoHttpd实现简易WebServer

WSGI介绍