socket实现简单的HTTP服务器

socket实现简单的HTTP服务器

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
import socket
EOL1 = b'\n\n'
EOL2 = b'\n\r\n'
body = '''Hello World!<h1>from the5fire</h1>'''
response_params = [
'HTTP/1.0 200 OK',
'Date:Sun,27 may 2018 01:01:01 GMT',
'Content-Type:text/html;charset=utf-8',
'Content-Length:{}\r\n'.format(len(body.encode())),
body

]
response = '\r\n'.join(response_params)

def handle_connection(conn,addr):
request = b""
while EOL1 not in request and EOL2 not in request:
request += conn.recv(1024)
print(request)
conn.send(response.encode()) # response转为bytes再传输
conn.close()

# socket1 = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) ipv4
def main():
serversocket = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
serversocket.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1)
serversocket.bind(("127.0.0.1",8000))
serversocket.listen(5)

print("http://127.0.0.1:8000/")
try:
while True:
conn,address = serversocket.accept()
handle_connection(conn,address)
finally:
serversocket.close()

if __name__ == '__main__':

Python 中的 Socket 编程(指南)
http://python.jobbole.com/89290/

坚持原创技术分享,您的支持将鼓励我继续创作!