Ciao a tutti...sto realizzando un protocollo TFTP come esercitazione scolastica. Ho trovato un esempio online che mi sta tornando molto utile per prendere spunto. Il problema è che devo trovare un alternativa alla classe "ByteArrayOutputStream", perchè il prof non vuole che la usiamo non avendola spiegata. Comunque, questo è il codice da qui sto prendendo spunto:
private ByteArrayOutputStream receiveFile() throws IOException {
ByteArrayOutputStream byteOutOS = new ByteArrayOutputStream();
int block = 1;
do {
System.out.println("TFTP Packet count: " + block);
block++;
bufferByteArray = new byte[PACKET_SIZE];
inBoundDatagramPacket = new DatagramPacket(bufferByteArray,
bufferByteArray.length, inetAddress,
datagramSocket.getLocalPort());
System.out.println("porta " + datagramSocket.getLocalPort());
//STEP 2.1: receive packet from TFTP server
datagramSocket.receive(inBoundDatagramPacket);
// Getting the first 4 characters from the TFTP packet
byte[] opCode = { bufferByteArray[0], bufferByteArray[1] };
if (opCode[1] == OP_ERROR) {
reportError();
} else if (opCode[1] == OP_DATAPACKET) {
// Check for the TFTP packets block number
byte[] blockNumber = { bufferByteArray[2], bufferByteArray[3] };
DataOutputStream dos = new DataOutputStream(byteOutOS);
dos.write(inBoundDatagramPacket.getData(), 4,
inBoundDatagramPacket.getLength() - 4);
//STEP 2.2: send ACK to TFTP server for received packet
sendAcknowledgment(blockNumber);
}
} while (!isLastPacket(inBoundDatagramPacket));
System.out.println("Download completato" );
return byteOutOS;
}
Dovrei riuscire a realizzare un metodo simile(evito il controllo degli errori che tanto non è richiesto) ma senza usare appunto ByteArrayOutputStream. Ho provato in mille modi, ma se ad esempio creo un semplice array di byte, poi il costruttore di "DataOutputStream" non permette di passarglielo all'interno, perchè accetta solo oggetto di tipo Stream appunto. Con cosa posso sostituirlo? Tra l'altro ho anche dei problemi col codice perchè esce dal ciclo e non scrive il file completo..ma una causa potrebbe essere che appunto manca questo array qui per la ricezione del file. Quindi nel caso posto dopo il mio codice. Se qualcuno sa come aiutarmi gliene sarei molto grato, è 3 giorni che ci sto lavorando con scarsi risultati