Mercurial > cosocket
changeset 0:fb5e84a8eb8a
Origination.
author | Atul Varma <varmaa@toolness.com> |
---|---|
date | Fri, 17 Apr 2009 11:28:28 -0700 |
parents | |
children | f1159b9ec823 |
files | taw.py |
diffstat | 1 files changed, 43 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/taw.py Fri Apr 17 11:28:28 2009 -0700 @@ -0,0 +1,43 @@ +import time +import socket +import select + +if __name__ == '__main__': + sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) + sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) + sock.bind(('127.0.0.1', 8071)) + sock.setblocking(0) + sock.listen(1) + print "waiting for connection." + reading_list = [sock] + countdowns = [] + last_time = time.time() + while True: + rlist, wlist, xlist = select.select(reading_list, [], [], 0.25) + new_countdowns = [] + now = time.time() + time_elapsed = now - last_time + last_time = now + for read_socket, timeleft in countdowns: + timeleft -= time_elapsed + if timeleft <= 0: + msg = "go away." + read_socket.send('HTTP/1.1 200 OK\r\n' + + 'Content-Length: %d\r\n' % len(msg) + + 'Content-Type: text/plain\r\n\r\n' + + msg) + read_socket.close() + else: + new_countdowns.append((read_socket, timeleft)) + countdowns = new_countdowns + for read_socket in rlist: + if read_socket == sock: + conn, addr = sock.accept() + print "got conn: %s" % conn + reading_list.append(conn) + else: + data = read_socket.recv(4096) + if '\r\n\r\n' in data: + reading_list.remove(read_socket) + countdowns.append((read_socket, 5.0)) + print "bye."