http://www.cppblog.com/jerryma/archive/2009/07/29/91603.aspx
上代码:
Server:
1
#
!/usr/bin/env python
2 # UDP Echo Server - udpserver.py
3 # code by www.cppblog.com/jerryma
4 import socket, traceback
5
6 host = ''
7 port = 54321
8
9 s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
10 s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1 )
11 s.bind((host, port))
12
13 while 1 :
14 try :
15 message, address = s.recvfrom( 8192 )
16 print " Got data from " , address, " : " , message
17 s.sendto(message, address)
18 except (KeyboardInterrupt, SystemExit):
19 raise
20 except :
21 traceback.print_exc()
22
Client:
2 # UDP Echo Server - udpserver.py
3 # code by www.cppblog.com/jerryma
4 import socket, traceback
5
6 host = ''
7 port = 54321
8
9 s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
10 s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1 )
11 s.bind((host, port))
12
13 while 1 :
14 try :
15 message, address = s.recvfrom( 8192 )
16 print " Got data from " , address, " : " , message
17 s.sendto(message, address)
18 except (KeyboardInterrupt, SystemExit):
19 raise
20 except :
21 traceback.print_exc()
22
1
#
!/usr/bin/env python
2 # UDP Client - udpclient.py
3 # code by www.cppblog.com/jerryma
4 import socket, sys
5
6 host = sys.argv[ 1 ]
7 textport = sys.argv[ 2 ]
8
9 s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
10 try :
11 port = int(textport)
12 except ValueError:
13 port = socket.getservbyname(textport, ' udp ' )
14 s.connect((host, port))
15 while 1 :
16 print " Enter data to transmit: "
17 data = sys.stdin.readline().strip()
18 s.sendall(data)
19 print " Looking for replies; press Ctrl-C or Ctrl-Break to stop. "
20 buf = s.recv( 2048 )
21 if not len(buf):
22 break
23 print " Server replies: " ,
24 sys.stdout.write(buf)
25 print " \n "
26
2 # UDP Client - udpclient.py
3 # code by www.cppblog.com/jerryma
4 import socket, sys
5
6 host = sys.argv[ 1 ]
7 textport = sys.argv[ 2 ]
8
9 s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
10 try :
11 port = int(textport)
12 except ValueError:
13 port = socket.getservbyname(textport, ' udp ' )
14 s.connect((host, port))
15 while 1 :
16 print " Enter data to transmit: "
17 data = sys.stdin.readline().strip()
18 s.sendall(data)
19 print " Looking for replies; press Ctrl-C or Ctrl-Break to stop. "
20 buf = s.recv( 2048 )
21 if not len(buf):
22 break
23 print " Server replies: " ,
24 sys.stdout.write(buf)
25 print " \n "
26