Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from socket import socket, AF_INET, SOCK_DGRAM
- import sys, random
- s = socket(AF_INET, SOCK_DGRAM)
- MAX = 65535
- PORT = 1060
- if 2 <= len(sys.argv) <= 3 and sys.argv[1:] == ['server']:
- host = sys.argv[2] if len(sys.argv) > 2 else ' '
- s.bind((host,PORT))
- print 'Listening at', s.getsockname()
- while 1:
- message, adress = s.recvfrom(MAX)
- if random.randint(0, 1):
- print 'The client at', adress, says, repr(message)
- s.sendto('Your data was %d bytes' % len(message), adress)
- else:
- print 'Pretending to drop package from' adress
- elif len(sys.argv) == 3 and sys.argv[1:] == ['client']:
- host = sys.argv[2]
- s.connect((host,PORT)
- print 'Client socket name is ', s.getsockname()
- delay = 0.1
- while 1:
- s.send( 'This is another message' )
- print 'Waiting up to', delay, 'seconds for a reply'
- s.settimeout(delay)
- try:
- data = s.recv(MAX)
- except socket.timeout:
- delay *= 2
- if delay > 2.0:
- raise RuntimeError('I think the server is down')
- except:
- raise
- else:
- break
- print 'The server says' repr(data)
- else:
- print >>sys.stderr, 'usage: udp_remote.py server [ <interface> ]'
- print >>sys.stderr, ' or: udp_remote.py client <host>'
- sys.exit(2)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement