<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def listen(timeout=6.0, port=BOOT_PORT):
 """Listen for a 'ping' broadcast message from an unbooted SpiNNaker board. Unbooted SpiNNaker boards send out a UDP broadcast message every 4-ish seconds on port 54321. This function listens for such messages and reports the IP address that it came from. Parameters timeout : float Number of seconds to wait for a message to arrive. port : int The port number to listen on. Returns ------- str or None The IP address of the SpiNNaker board from which a ping was received or None if no ping was observed. """


    s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)

    # Don't take control of this socket in the system (i.e. allow other
    # processes to bind to it) since we're listening for broadcasts.
    s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)

    # Listen for the broadcasts
    s.bind(('0.0.0.0', port))
    s.settimeout(timeout)
    try:
        message, (ipaddr, port) = s.recvfrom(512)
        return ipaddr
    except socket.timeout:
        return None