import sys, time
import stackless
import stacklesssocket

stacklesssocket.install()
import socket

def handle_client(client, addr):
    #print "connection from", addr
    while (True):
        data = client.recv(65536)
        if not data:
           break
        client.send(data)
    #print "client closed"
    client.close()


def server(port):
    print "server starting"
    serversocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    serversocket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
    serversocket.bind(port)
    serversocket.listen(5)

    while True:
           (client, addr) = serversocket.accept()
           stackless.tasklet(handle_client)(client, addr)


stackless.tasklet(server)(('127.0.0.1',8001))
stackless.run()

