def start(self): #TODO:if the file size is less than N packets, need to be handled # add the first N packets for i in range(self.N): p = self.get_packet() self.window.append(p) self.win_tail = self.win_tail + 1 if self.eof: break #Send the packets in the window self.send_window() thread.start_new_thread(self.alram_trigerrer, ()) while len(self.window) > 0: # receive data from client data, addr = self.sock.recvfrom(4096) #create ACK packet from the received data p = Packet.build_packet(data, is_ack=True) if (p.seq_num > self.win_head): new_pkts = self.update_window(p.seq_num - self.win_head) self.win_tail = self.win_tail + new_pkts self.win_head = p.seq_num self.logger.info("Rcvd ACK %d. Moving forward to %d" % (p.seq_num, self.win_tail)) else: self.logger.info("Wrong ACK %d rcvd" % (p.seq_num)) pass