diff --git a/Code/SingleModuleTesting/broadcastClient.py b/Code/SingleModuleTesting/broadcastClient.py new file mode 100644 index 0000000..c92b6b1 --- /dev/null +++ b/Code/SingleModuleTesting/broadcastClient.py @@ -0,0 +1,19 @@ +import socket + +client = socket.socket(socket.AF_INET, socket.SOCK_DGRAM, socket.IPPROTO_UDP) # UDP + +# Enable port reusage so we will be able to run multiple clients and servers on single (host, port). +# Do not use socket.SO_REUSEADDR except you using linux(kernel<3.9): goto https://stackoverflow.com/questions/14388706/how-do-so-reuseaddr-and-so-reuseport-differ for more information. +# For linux hosts all sockets that want to share the same address and port combination must belong to processes that share the same effective user ID! +# So, on linux(kernel>=3.9) you have to run multiple servers and clients under one user to share the same (host, port). +# Thanks to @stevenreddie +# client.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEPORT, 1) + +# Enable broadcasting mode +client.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1) + +client.bind(("", 37020)) +while True: + # Thanks @seym45 for a fix + data, addr = client.recvfrom(1024) + print("received message: %s" % data) \ No newline at end of file diff --git a/Code/SingleModuleTesting/broadcastServer.py b/Code/SingleModuleTesting/broadcastServer.py new file mode 100644 index 0000000..4935c3a --- /dev/null +++ b/Code/SingleModuleTesting/broadcastServer.py @@ -0,0 +1,23 @@ +import socket +import time + +server = socket.socket(socket.AF_INET, socket.SOCK_DGRAM, socket.IPPROTO_UDP) + +# Enable port reusage so we will be able to run multiple clients and servers on single (host, port). +# Do not use socket.SO_REUSEADDR except you using linux(kernel<3.9): goto https://stackoverflow.com/questions/14388706/how-do-so-reuseaddr-and-so-reuseport-differ for more information. +# For linux hosts all sockets that want to share the same address and port combination must belong to processes that share the same effective user ID! +# So, on linux(kernel>=3.9) you have to run multiple servers and clients under one user to share the same (host, port). +# Thanks to @stevenreddie +# server.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEPORT, 1) + +# Enable broadcasting mode +server.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1) + +# Set a timeout so the socket does not block +# indefinitely when trying to receive data. +server.settimeout(0.2) +message = b"your very important message" +while True: + server.sendto(message, ("", 37020)) + print("message sent!") + time.sleep(1) \ No newline at end of file