5 from optparse import OptionParser
10 now=time.strftime("%H:%M:%S", time.localtime())
11 print "*",now,'--',message
13 class EchoRequestHandler(SocketServer.StreamRequestHandler):
15 line = self.rfile.readline()
16 self.wfile.write(line)
18 class UppercaseRequestHandler(SocketServer.StreamRequestHandler):
20 line = self.rfile.readline()
21 self.wfile.write(line.upper())
29 parser.add_option("-p","--port", action="store", dest="port", type="int",
30 default=10000, help="port number")
31 parser.add_option("-a","--address", action="store", dest="address",
32 default=socket.gethostname(), help="address")
33 parser.add_option("-t","--timeout", action="store", dest="timeout", type="int",
36 (options, args) = parser.parse_args()
41 server = SocketServer.TCPServer((options.address, options.port),
42 UppercaseRequestHandler)
46 t = threading.Thread(target=server.serve_forever)
47 t.setDaemon(True) # don't hang on exit
49 time.sleep(options.timeout)
52 server.serve_forever()
53 except KeyboardInterrupt:
59 from optparse import OptionParser
62 parser.add_option("-p","--port", action="store", dest="port", type="int",
63 default=10000, help="port number")
64 parser.add_option("-a","--address", action="store", dest="address",
65 default=socket.gethostname(), help="address")
66 parser.add_option("-s","--sleep", action="store", dest="sleep", type="int",
67 default=1, help="sleep seconds")
68 parser.add_option("-l","--loops", action="store", dest="loops", type="int",
69 default=1, help="iteration loops")
71 (options, args) = parser.parse_args()
77 for i in range(1,options.loops+1):
78 s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
79 s.connect((options.address , options.port))
82 if s.send(mout) != len(mout):
83 myprint("cannot send %s"%mout.strip())
88 myprint("unexpected reception\ngot:%s\nexpected: %s",line,min)
91 myprint("OK:%s"%mout.strip())
92 # leave the connection open, but the last one (so 1 iter returns fast)
93 if i != options.loops:
94 time.sleep(options.sleep)
95 myprint("disconnecting")
99 if not result: exit_return=1
100 sys.exit(exit_return)
102 if __name__ == '__main__':
103 for argv in sys.argv[1:]:
104 if argv.find("client") >= 0:
105 sys.argv.remove(argv)
107 elif argv.find("server") >= 0:
108 sys.argv.remove(argv)
110 print 'you must specify either --client or --server'