--- /dev/null
+import select\r
+import socket\r
+from ServerUtils import log, create_listener_socket, DEFAULT_PORT, SocketStream, Connection\r
+\r
+\r
+def main(port = DEFAULT_PORT):\r
+ sock = create_listener_socket(port)\r
+ connections = []\r
+ \r
+ while True:\r
+ rlist, wlist, xlist = select.select([sock] + connections, [], [])\r
+ \r
+ if sock in rlist:\r
+ rlist.remove(sock)\r
+ newsock, name = sock.accept()\r
+ conn = Connection(SocketStream(newsock))\r
+ conn.sockname = name\r
+ connections.append(conn)\r
+ log("welcome", conn.sockname)\r
+ \r
+ for conn in rlist:\r
+ try:\r
+ conn.serve()\r
+ except (EOFError, socket.error):\r
+ connections.remove(conn)\r
+ log("goodbyte", conn.sockname)\r
+\r
+if __name__ == "__main__":\r
+ main()\r