From 1b7341c07e68e47442993a64be04177999d882a4 Mon Sep 17 00:00:00 2001 From: Bastian Schroll Date: Sat, 22 Sep 2018 08:39:41 +0200 Subject: [PATCH] resolve todo and add some docu --- boswatch/network/broadcast.py | 27 ++++++++++++++++++++------- 1 file changed, 20 insertions(+), 7 deletions(-) diff --git a/boswatch/network/broadcast.py b/boswatch/network/broadcast.py index c2b4842..334c995 100644 --- a/boswatch/network/broadcast.py +++ b/boswatch/network/broadcast.py @@ -24,6 +24,9 @@ logging.debug("- %s loaded", __name__) class BroadcastClient: def __init__(self, port=5000): + """!Create an BroadcastClient instance + + @param port: port to send broadcast packets (5000)""" self._broadcastPort = port self._serverIP = "" @@ -32,9 +35,13 @@ class BroadcastClient: self._socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) self._socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) self._socket.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1) - self._socket.settimeout(3) + self._socket.settimeout(5) def sendBroadcast(self): + """!Send broadcastpackets + + This function will block until the connection Info + from server will be received.""" while True: try: logging.debug("send magic as broadcast") @@ -49,7 +56,7 @@ class BroadcastClient: logging.info("got connection info: %s:%d", self._serverIP, self._serverPort) return True except socket.timeout: - logging.warning("retry sending magic") + logging.warning("no server found - retry sending magic") continue except: logging.exception("error on getting connection info") @@ -57,22 +64,28 @@ class BroadcastClient: @property def serverIP(self): + """!Property to get the server IP after successful broadcast""" return self._serverIP @property def serverPort(self): + """!Property to get the server Port after successful broadcast""" return self._serverPort class BroadcastServer: - """!General class comment""" - def __init__(self, port=5000): - """!init comment""" + def __init__(self, servePort=8080,listenPort=5000): + """!Create an BroadcastServer instance + + @param listenPort: port to listen for broadcast packets (5000)""" self._socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) - self._socket.bind(('', port)) + self._socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) + self._socket.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1) + self._socket.bind(('', listenPort)) self._serverThread = None self._serverIsRunning = False + self._servePort = servePort def start(self): try: @@ -102,7 +115,7 @@ class BroadcastServer: if payload == "": logging.debug("received magic from: %s", address[0]) logging.info("send connection info in magic to: %s", address[0]) - self._socket.sendto(";8080".encode(), address) # todo give the TCPServer port + self._socket.sendto(";".encode() + str(self._servePort).encode(), address) return True except: logging.exception("error while listening for clients")