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
#!/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')