# Simple Example 001 ## Sender ```python #!/usr/bin/env python3 import sys, socket def main(): args = sys.argv[1:] for arg in args: send(arg) def send_message(host,port,message): with socket.socket(socket.AF_INET,socket.SOCK_DGRAM) as s: s.connect((host,port)) s.send(message) def send(x): print(f"Sending {x}") send_message('localhost',3000,x.encode()) if __name__ == "__main__": main() ``` ## Receiver ```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') ``` ## Usage ```bash ./receiver.py # start receiving ./sender your message "goes here" # sends three messages: "your", "message", and "goes here" ```