blob: 8fce547f56a516cc419c71918b558e82079bec1a [file] [log] [blame]
Guido van Rossumf06ee5f1996-11-27 19:52:01 +00001#! /usr/bin/env python
Guido van Rossum22825e81991-07-01 18:32:32 +00002
3# Client and server for udp (datagram) echo.
4#
5# Usage: udpecho -s [port] (to start a server)
6# or: udpecho -c host [port] <file (client)
7
8import sys
9from socket import *
10
11ECHO_PORT = 50000 + 7
12BUFSIZE = 1024
13
14def main():
15 if len(sys.argv) < 2:
16 usage()
Guido van Rossumf628a981992-05-19 13:51:20 +000017 if sys.argv[1] == '-s':
Guido van Rossum22825e81991-07-01 18:32:32 +000018 server()
Guido van Rossumf628a981992-05-19 13:51:20 +000019 elif sys.argv[1] == '-c':
Guido van Rossum22825e81991-07-01 18:32:32 +000020 client()
21 else:
22 usage()
23
24def usage():
25 sys.stdout = sys.stderr
26 print 'Usage: udpecho -s [port] (server)'
27 print 'or: udpecho -c host [port] <file (client)'
28 sys.exit(2)
29
30def server():
31 if len(sys.argv) > 2:
32 port = eval(sys.argv[2])
33 else:
34 port = ECHO_PORT
35 s = socket(AF_INET, SOCK_DGRAM)
36 s.bind('', port)
37 print 'udp echo server ready'
38 while 1:
39 data, addr = s.recvfrom(BUFSIZE)
40 print 'server received', `data`, 'from', `addr`
41 s.sendto(data, addr)
42
43def client():
44 if len(sys.argv) < 3:
45 usage()
46 host = sys.argv[2]
47 if len(sys.argv) > 3:
48 port = eval(sys.argv[3])
49 else:
50 port = ECHO_PORT
51 addr = host, port
52 s = socket(AF_INET, SOCK_DGRAM)
53 s.bind('', 0)
54 print 'udp echo client ready, reading stdin'
55 while 1:
56 line = sys.stdin.readline()
57 if not line:
58 break
59 s.sendto(line, addr)
60 data, fromaddr = s.recvfrom(BUFSIZE)
61 print 'client received', `data`, 'from', `fromaddr`
62
63main()