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