コード例 #1
0
    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
                    }