+++ /dev/null
-#! /usr/bin/env python\r
-\r
-# Client and server for udp (datagram) echo.\r
-#\r
-# Usage: udpecho -s [port] (to start a server)\r
-# or: udpecho -c host [port] <file (client)\r
-\r
-import sys\r
-from socket import *\r
-\r
-ECHO_PORT = 50000 + 7\r
-BUFSIZE = 1024\r
-\r
-def main():\r
- if len(sys.argv) < 2:\r
- usage()\r
- if sys.argv[1] == '-s':\r
- server()\r
- elif sys.argv[1] == '-c':\r
- client()\r
- else:\r
- usage()\r
-\r
-def usage():\r
- sys.stdout = sys.stderr\r
- print 'Usage: udpecho -s [port] (server)'\r
- print 'or: udpecho -c host [port] <file (client)'\r
- sys.exit(2)\r
-\r
-def server():\r
- if len(sys.argv) > 2:\r
- port = eval(sys.argv[2])\r
- else:\r
- port = ECHO_PORT\r
- s = socket(AF_INET, SOCK_DGRAM)\r
- s.bind(('', port))\r
- print 'udp echo server ready'\r
- while 1:\r
- data, addr = s.recvfrom(BUFSIZE)\r
- print 'server received %r from %r' % (data, addr)\r
- s.sendto(data, addr)\r
-\r
-def client():\r
- if len(sys.argv) < 3:\r
- usage()\r
- host = sys.argv[2]\r
- if len(sys.argv) > 3:\r
- port = eval(sys.argv[3])\r
- else:\r
- port = ECHO_PORT\r
- addr = host, port\r
- s = socket(AF_INET, SOCK_DGRAM)\r
- s.bind(('', 0))\r
- print 'udp echo client ready, reading stdin'\r
- while 1:\r
- line = sys.stdin.readline()\r
- if not line:\r
- break\r
- s.sendto(line, addr)\r
- data, fromaddr = s.recvfrom(BUFSIZE)\r
- print 'client received %r from %r' % (data, fromaddr)\r
-\r
-main()\r