3 # Thierry Parmentelat <thierry.parmentelat@inria.fr>
4 # Copyright (C) 2010 INRIA
8 from optparse import OptionParser
13 now=time.strftime("%H:%M:%S", time.localtime())
14 print "*",now,'--',message
16 def show_network_status():
17 print "ip address show"
18 subprocess.call(['ip','address','show'])
20 subprocess.call(['ip','route','show'])
22 class EchoRequestHandler(SocketServer.StreamRequestHandler):
24 line = self.rfile.readline()
25 self.wfile.write(line)
27 class UppercaseRequestHandler(SocketServer.StreamRequestHandler):
29 line = self.rfile.readline()
30 self.wfile.write(line.upper())
38 parser.add_option("-p","--port", action="store", dest="port", type="int",
39 default=10000, help="port number")
40 parser.add_option("-a","--address", action="store", dest="address",
41 default=socket.gethostname(), help="address")
42 parser.add_option("-t","--timeout", action="store", dest="timeout", type="int",
45 (options, args) = parser.parse_args()
52 server = SocketServer.TCPServer((options.address, options.port),
53 UppercaseRequestHandler)
57 t = threading.Thread(target=server.serve_forever)
58 t.setDaemon(True) # don't hang on exit
60 time.sleep(options.timeout)
63 server.serve_forever()
64 except KeyboardInterrupt as e:
65 print 'Bailing out on keyboard interrupt'
70 from optparse import OptionParser
73 parser.add_option("-p","--port", action="store", dest="port", type="int",
74 default=10000, help="port number")
75 parser.add_option("-a","--address", action="store", dest="address",
76 default=socket.gethostname(), help="address")
77 parser.add_option("-s","--sleep", action="store", dest="sleep", type="int",
78 default=1, help="sleep seconds")
79 parser.add_option("-l","--loops", action="store", dest="loops", type="int",
80 default=1, help="iteration loops")
82 (options, args) = parser.parse_args()
88 for i in range(1,options.loops+1):
89 s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
90 s.connect((options.address , options.port))
93 if s.send(mout) != len(mout):
94 myprint("cannot send %s"%mout.strip())
99 myprint("unexpected reception\ngot:%s\nexpected: %s",line,min)
102 myprint("OK:%s"%mout.strip())
103 # leave the connection open, but the last one (so 1 iter returns fast)
104 if i != options.loops:
105 time.sleep(options.sleep)
106 myprint("disconnecting")
110 if not result: exit_return=1
111 sys.exit(exit_return)
113 if __name__ == '__main__':
114 for argv in sys.argv[1:]:
115 if argv.find("client") >= 0:
116 sys.argv.remove(argv)
118 elif argv.find("server") >= 0:
119 sys.argv.remove(argv)
121 print 'you must specify either --client or --server'