Skip to content

Commit ae0f766

Browse files
authored
Create Python利用socket实现简单http server.md
1 parent 984909c commit ae0f766

File tree

1 file changed

+35
-0
lines changed

1 file changed

+35
-0
lines changed
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
# 利用socket实现http协议
2+
3+
**http协议是基于tcp的,所以利用tcp可以实现http协议,实现一个简单的 http web server功能。**
4+
5+
import socketserver
6+
7+
8+
body = """<h1>hello web client</h1>"""
9+
10+
response_param = ['HTTP/1.0 200 OK',
11+
'Date: Mon, 13 May 2019 09:57:18 GMT',
12+
'Content-Type: text/html; charset=utf-8',
13+
'Content-Length: {}\r\n'.format(len(body.encode())),
14+
body]
15+
response = '\r\n'.join(response_param)
16+
17+
18+
class MyServer(socketserver.BaseRequestHandler):
19+
def handle(self):
20+
conn = self.request
21+
recv_data = b''
22+
while b'\n\n' not in recv_data and b'\n\r\n' not in recv_data:
23+
24+
recv_data += conn.recv(1024)
25+
print(recv_data)
26+
conn.send(response.encode())
27+
conn.close()
28+
29+
30+
if __name__ == '__main__':
31+
# 第一步
32+
# 实例化server对象,传入本机ip,以及监听的端口号,还有新建的继承socketserver模块下的BaseRequestHandler类
33+
server = socketserver.ThreadingTCPServer(('127.0.0.1', 8000), MyServer)
34+
# 激活服务端
35+
server.serve_forever()

0 commit comments

Comments
 (0)