def receive_one_ping(mySocket, myID, timeout):
timeLeft = timeout / <NUM_LIT:1000><EOL>while True:  <EOL><INDENT>startedSelect = default_timer()<EOL>whatReady = select.select([mySocket], [], [], timeLeft)<EOL>howLongInSelect = (default_timer() - startedSelect)<EOL>if whatReady[<NUM_LIT:0>] == []:  <EOL><INDENT>return None, <NUM_LIT:0>, <NUM_LIT:0>, <NUM_LIT:0>, <NUM_LIT:0><EOL><DEDENT>timeReceived = default_timer()<EOL>recPacket, addr = mySocket.recvfrom(ICMP_MAX_RECV)<EOL>ipHeader = recPacket[:<NUM_LIT:20>]<EOL>iphVersion, iphTypeOfSvc, iphLength,iphID, iphFlags, iphTTL, iphProtocol,iphChecksum, iphSrcIP, iphDestIP = struct.unpack(<EOL>"<STR_LIT>", ipHeader<EOL>)<EOL>icmpHeader = recPacket[<NUM_LIT:20>:<NUM_LIT>]<EOL>icmpType, icmpCode, icmpChecksum,icmpPacketID, icmpSeqNumber = struct.unpack(<EOL>"<STR_LIT>", icmpHeader<EOL>)<EOL>if icmpPacketID == myID:  <EOL><INDENT>dataSize = len(recPacket) - <NUM_LIT><EOL>return (timeReceived,<EOL>(dataSize + <NUM_LIT:8>),<EOL>iphSrcIP,<EOL>icmpSeqNumber,<EOL>iphTTL)<EOL><DEDENT>timeLeft = timeLeft - howLongInSelect<EOL>if timeLeft <= <NUM_LIT:0>:<EOL><INDENT>return None, <NUM_LIT:0>, <NUM_LIT:0>, <NUM_LIT:0>, <NUM_LIT:0><EOL><DEDENT><DEDENT>
receive_one_ping
    Receive the ping from the socket. Timeout = in ms

    :param mySocket:
    :param myID:
    :param timeout: