Skip to content

Commit d1befa7

Browse files
committed
canonical base echo server as starting point for http server exercise
1 parent f7e4ea3 commit d1befa7

File tree

1 file changed

+40
-0
lines changed

1 file changed

+40
-0
lines changed

resources/session02/http_server.py

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
import socket
2+
import sys
3+
4+
5+
def server(log_buffer=sys.stderr):
6+
address = ('127.0.0.1', 10000)
7+
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
8+
sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
9+
print >>log_buffer, "making a server on {0}:{1}".format(*address)
10+
sock.bind(address)
11+
sock.listen(1)
12+
13+
try:
14+
while True:
15+
print >>log_buffer, 'waiting for a connection'
16+
conn, addr = sock.accept() # blocking
17+
try:
18+
print >>log_buffer, 'connection - {0}:{1}'.format(*addr)
19+
while True:
20+
data = conn.recv(16)
21+
print >>log_buffer, 'received "{0}"'.format(data)
22+
if data:
23+
msg = 'sending data back to client'
24+
print >>log_buffer, msg
25+
conn.sendall(data)
26+
else:
27+
msg = 'no more data from {0}:{1}'.format(*addr)
28+
print >>log_buffer, msg
29+
break
30+
finally:
31+
conn.close()
32+
33+
except KeyboardInterrupt:
34+
sock.close()
35+
return
36+
37+
38+
if __name__ == '__main__':
39+
server()
40+
sys.exit(0)

0 commit comments

Comments
 (0)