code: def handle(self, pkt, raddress, rport):
          
          if isinstance(pkt, TftpPacketDAT):
              return self.handleDat(pkt)
  
          # Every other packet type is a problem.
          elif isinstance(pkt, TftpPacketACK):
              # Umm, we ACK, you don't.
              self.sendError(TftpErrors.IllegalTftpOp)
              raise TftpException("Received ACK from peer when expecting DAT")
  
          elif isinstance(pkt, TftpPacketWRQ):
              self.sendError(TftpErrors.IllegalTftpOp)
              raise TftpException("Received WRQ from peer when expecting DAT")
  
          elif isinstance(pkt, TftpPacketERR):
              self.sendError(TftpErrors.IllegalTftpOp)
              raise TftpException("Received ERR from peer: " + str(pkt))
  
          else:
              self.sendError(TftpErrors.IllegalTftpOp)
              raise TftpException("Received unknown packet type from peer: " + str(pkt))
docs: Handle the packet in response to an ACK, which should be a DAT.