#!/usr/bin/env python
import socket, sys
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
MAX = 65535
PORT = 1060
if sys.argv[1:] == ['server']:
s.bind(('127.0.0.1', PORT))
print 'Listening at', s.getsockname()
while True:
data, address = s.recvfrom(MAX)
print 'The client at', address, 'says', repr(data)
s.sendto('Your data was %d bytes' % len(data), address)
elif sys.argv[1:] == ['client']:
print 'Address before sending:', s.getsockname()
s.sendto('This is my message', ('127.0.0.1', PORT))
print 'Address after sending', s.getsockname()
data, address = s.recvfrom(MAX) # overly promiscuous - see text!
print 'The server', address, 'says', repr(data)
else:
print >>sys.stderr, 'usage: udp_local.py server|client'
运行这段代码:
python filename.py server
#Listening at ('127.0.0.1', 1060)
#Address before sending: ('0.0.0.0', 0)
#Address after sending ('0.0.0.0', 62892)
#The server ('127.0.0.1', 1060) says 'Your data was 18 bytes'
python filename.py client
#The client at ('127.0.0.1', 62892) says 'This is my message'
2、创建远程连接并验证收到的信息:
import random, socket, sys
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
MAX = 65535
PORT = 1060
if 2 2.0:
raise RuntimeError('I think the server is down')
else:
break # we are done, and can stop looping
print 'The server says', repr(data)
else:
print >>sys.stderr, 'usage: udp_remote.py server [ ]'
print >>sys.stderr, ' or: udp_remote.py client '
sys.exit(2)
这里的s.connect((hostname, PORT))方法,可以让我们不用每次都调用s.sendto('This is my message', ('127.0.0.1', PORT))。直接调用
s.send('This is another message')。