@classmethod
def discover(cls, xnetwork: bool=False):
    """
        This method can be used to sent a discovery broadcast into the network to which all the phantom cameras will
        respond. It will return a list of dicts, where each dict contains the information from one of the cameras
        responses.
        The dicts contain the following keys:
        - protocol:     A string defining the protocol used by the phantom camera (always P16)
        - ip:           A string containing the IP address of the camera in the network
        - port:         A string containing the int port, which the camera uses to accept control connections
        - hwver:        A string identifier for the hardware version of the camera
        - serial:       A string containing the int serial number of the camera

        CHANGELOG

        Added 20.05.2019

        Changed 27.05.2019
        Added additional argument boolean flag "xnetwork". If it is true, that means the camera is connected to the
        10G interface and thus a different IP range has to be used

        :param xnetwork:

        :return:
        """
    discovery_socket = cls.get_discovery_socket(xnetwork)
    cls.send_discovery_request(discovery_socket)
    responses = cls.receive_discovery_responses(discovery_socket)
    camera_dicts = []
    for response in responses:
        camera_dict = cls.parse_discovery_response(response[0].decode(
            'utf-8'), response[1])
        camera_dicts.append(camera_dict)
    return camera_dicts
