一个简单的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的主要内容,如果未能解决你的问题,请参考以下文章