title: Trivial UDP Receive Example tags: python net udp ## Minimal ``` import socket s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) s.bind(("0.0.0.0",5001)) try: while True: data, addr = s.recvfrom(1024) print(f"Got {data.decode()}") except KeyboardInterrupt: print("Ctrl-C") ``` ## Threaded ```python #!/usr/bin/env python3 import threading import queue import time q = queue.Queue() def worker(): while True: if q.empty(): print("Empty -- sleeping") time.sleep(1) print("Done sleeping") else: while not q.empty(): item = q.get() print(f'Received {len(item)} bytes in worker thread') t = item.decode() print(f"Message: {t}") q.task_done() # Turn-on the worker thread. threading.Thread(target=worker, daemon=True).start() import socket with socket.socket(socket.AF_INET,socket.SOCK_DGRAM) as s: s.bind(("",3000)) while True: m = s.recv(4096) print(f"Received {len(m)} bytes in main thread") q.put(m) # Block until all tasks are done. q.join() print('All work completed') ```