def _send_raw_packet(self, packet, retransmit=False): ''' This will send packet over the connected client and start a timer for recieving the ack. :param packet: :param retransmit: :return: ''' self.out_socket.sendto(packet, self.dst_ip_address) sent = Packet(packet) if retransmit: sent.add_flag(RETRANSMIT_FLAG) if sent.is_nudge(): seq_num = "NUDGE" else : seq_num = str(sent.seq_num) if self.timers.get(seq_num): self.timers[seq_num]['time'] = datetime.datetime.now() self.timers[seq_num]['retransmissions'] += 1 else: self.timers[seq_num] = { 'time':datetime.datetime.now(), 'packet':packet, 'retransmissions':0 }