docs: def start(self):
          '''
          Start listening for messages.
          '''
          log.debug('Creating the TCP server')
          if ':' in self.address:
              self.skt = socket.socket(socket.AF_INET6, socket.SOCK_STREAM)
          else:
              self.skt = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
          if self.reuse_port:
              self.skt.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
              if hasattr(socket, 'SO_REUSEPORT'):
                  self.skt.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEPORT, 1)
              else:
                  log.error('SO_REUSEPORT not supported')
          try:
              self.skt.bind((self.address, int(self.port)))
          except socket.error as msg:
              error_string = 'Unable to bind to port {} on {}: {}'.format(self.port, self.address, msg)
              log.error(error_string, exc_info=True)
              raise BindException(error_string)
          log.debug('Accepting max %d parallel connections', self.max_clients)
          self.skt.listen(self.max_clients)
          self.thread_serve = threading.Thread(target=self._serve_clients)
          self.thread_serve.start()