Allen Riddell added the comment: (couldn't figure out how to attach multiple files) -- client_good.py --
"""Send and receive a messages using DatagramProtocol""" import asyncio import time class Helloer(asyncio.DatagramProtocol): def connection_made(self, transport): print('(helloer) connection made') self.transport = transport def connection_lost(self, transport): print('(helloer listener) connection lost!') def datagram_received(self, data, addr): print('(helloer listener) received data from {}: {}'.format(addr, data)) def error_received(self, exc): print('(helloer listener) error received: {}'.format(exc)) loop = asyncio.get_event_loop() # WORKS: coro = loop.create_datagram_endpoint(Helloer, local_addr=('127.0.0.1', 8888)) # FAILS (blocks?): # coro = loop.create_datagram_endpoint(Helloer, local_addr=('127.0.0.1', 8888), remote_addr=('127.0.0.1', 9999)) transport, protocol = loop.run_until_complete(coro) loop.run_forever() -- client_bad.py -- """Send and receive a messages using DatagramProtocol""" import asyncio import time class Helloer(asyncio.DatagramProtocol): def connection_made(self, transport): print('(helloer) connection made') self.transport = transport def connection_lost(self, transport): print('(helloer listener) connection lost!') def datagram_received(self, data, addr): print('(helloer listener) received data from {}: {}'.format(addr, data)) def error_received(self, exc): print('(helloer listener) error received: {}'.format(exc)) loop = asyncio.get_event_loop() # WORKS: # coro = loop.create_datagram_endpoint(Helloer, local_addr=('127.0.0.1', 8888)) # FAILS (blocks?): coro = loop.create_datagram_endpoint(Helloer, local_addr=('127.0.0.1', 8888), remote_addr=('127.0.0.1', 9999)) transport, protocol = loop.run_until_complete(coro) loop.run_forever() -- sender.py -- """Send a UDP packet to a specified port and quit""" import argparse import socket import time if __name__ == "__main__": parser = argparse.ArgumentParser(description='send a udp packet') parser.add_argument('host', type=str) parser.add_argument('port', type=int) args = parser.parse_args() host, port = args.host, args.port time.sleep(0.1) sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) data = 'message from sender sent to {}:{}'.format(host, port) sent = sock.sendto(data.encode('ascii'), (host, port)) print("(sender) sent udp packet to {}:{}".format(host, port)) sock.close() ---------- Added file: http://bugs.python.org/file35547/client_bad.py _______________________________________ Python tracker <rep...@bugs.python.org> <http://bugs.python.org/issue21701> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com