#!/usr/local/bin/python import SocketServer import socket import string import sys port = 5194 if len(sys.argv) > 1: port = string.atoi(sys.argv[1]) class Srv(SocketServer.StreamRequestHandler): def handle(self): print "python srv called by %s" % (self.client_address,) # why is the comma needed?? while 1: line = self.rfile.readline().strip() print "python srv got [" + line + "]" + " from " + self.client_address[0] self.wfile.write(line + "\n") if len(line) <= 1: break if line == "exit": break if line == "die!": sys.exit() srv = SocketServer.ThreadingTCPServer(("",port), Srv) # or ThreadingTCPServer or ForkingTCPServer ? # this is a multi-threaded server srv.serve_forever() # this does not exit gracefully!