Boa tarde galera, estou mudando o modo em que meu programa envia o arquivo. Então desenvolvi um “protocolo”, só que esse protocolo envia os 102400 bytes (tamanho do buffer) que eu criei, e depois envia números aleatórios
Código server:
FileInputStream fis = new FileInputStream(file);
BufferedInputStream bis = new BufferedInputStream(fis);
DataOutputStream envia = new DataOutputStream(usuario.getSocketFTP().getOutputStream());
int tamanho = 102400; // buffer de 100KB
byte[] buffer = new byte[tamanho];
int lidos = -1;
System.out.println("Transferência de: " + caminho + " começou.");
while ((lidos = fis.read(buffer, 0, tamanho)) != -1)
{
System.out.println("Tentando enviar " + lidos + " bytes");
envia.writeInt(lidos);
envia.write(buffer, 0, lidos);
System.out.println("Enviando");
}
System.out.println("Transferência de: " + caminho + " terminou.");
saida.flush();
bis.close();
‘lidos’ no caso sempre está printitando 102400 (tamanho do meu buffer, o problema ocorre no lado do cliente)
CLiente:
int recebido = entradaFTP.readInt();
System.out.println(recebido + "");
while(recebido > 0) {
bytesRead = entradaFTP.read(cbuffer);
fos.write(cbuffer, 0, bytesRead);
fos.flush();
recebido = entradaFTP.readInt();
System.out.println(recebido + " recebido");
}
System.out.println(recebido + "");
Recebido no primeiro looping vira 102400, mas no segundo já muda de valor:
[telefone removido] recebido
-[telefone removido] recebido
-[telefone removido]
Alguém poderia me ajudar?