code: def _get_packet(self, socket):
          
          data, (ip, port) = socket.recvfrom(self._buffer_size)
          packet, remainder = self._unpack(data)
          self.inbox.put((ip, port, packet))
          self.new_packet.set()
          self.debug(u"RX: {}".format(packet))
  
          if packet.header.sequence_number is not None:
              # Packet needs to be acknowledged
              self._send_ack(ip, port, packet)
          ack_seq = packet.header.ack_sequence_number
          if ack_seq is not None:
              # Packet got acknowledged
              with self._seq_ack_lock:
                  if ack_seq in self._seq_ack:
                      self.debug(u"Seq {} got acked".format(ack_seq))
                      self._seq_ack.remove(ack_seq)
          return packet
docs: Read packet and put it into inbox
  
          :param socket: Socket to read from
          :type socket: socket.socket
          :return: Read packet
          :rtype: APPMessage