On Mon, Feb 4, 2013, at 04:49 PM, Rodrick Brown wrote: > For the life of me I cant figure out why this exception is being thrown. > How could I use pdb to debug this? > > $ python udp_local2.py server > File "udp_local2.py", line 36 > except: > ^ > SyntaxError: invalid syntax > > > #!/usr/bin/env python > > import random, socket, sys > s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) > > MAX = 65535 > PORT = 1060 > > if 2 <= len(sys.argv) <= 3 and sys.argv[1] == 'server': > interface = sys.argv[2] if len(sys.argv) > 2 else '' > s.bind((interface, PORT)) > print 'Listening at', s.getsockname() > while True: > data, address = s.recvfrom(MAX) > if random.randint(0, 1): > print 'The client at', address, 'says:', repr(data) > s.sendto('Your data was %d bytes' % len(data), address) > else: > print 'Pretending to drop packet from', address > > elif len(sys.argv) == 3 and sys.argv[1] == 'client': > hostname = sys.argv[2] > s.connect((hostname, PORT)) > print 'Client socket name is', s.getsockname() > delay = 0.1 > while True: > 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: %d server [<interfae>]' % > sys.argv[0] > print >> sys.stderr, ' or: %d client <host>' % sys.argv[0] > sys.exit(2) > -- > http://mail.python.org/mailman/listinfo/python-list
Your "except" statement is on the same level as "if delay > 2.0".. effectively: if delay > 2.0 ... except: which is not valid syntax. Excepts go with try: blocks, not if: blocks. -- http://mail.python.org/mailman/listinfo/python-list