1 #通过gevent实现单线程下的多socket并发 服务器
2
3
4 #server side
5 import sys
6 import socket
7 import time
8 import gevent
9
10 from gevent import socket,monkey
11 monkey.patch_all()
12
13
14 def server(port):
15 s = socket.socket()
16 s.bind(('0.0.0.0', port))
17 s.listen(500)
18 while True:
19 cli, addr = s.accept()
20 gevent.spawn(handle_request, cli)
21
22
23
24 def handle_request(conn):
25 try:
26 while True:
27 data = conn.recv(1024)
28 print("recv:", data)
29 conn.send(data)
30 if not data:
31 conn.shutdown(socket.SHUT_WR)
32
33 except Exception as ex:
34 print(ex)
35 finally:
36 conn.close()
37 if __name__ == '__main__':
38 server(8001)