Erro ao receber arquivos via socket? Socket/outputstream/inputstream

2 respostas
N

Boa tarde galera, buscando na internet achei vários tutoriais de como fazer transferência de arquivos via socket, quase todos ensinando por esse método:

Código cliente

int tamanho = 4096; // buffer de 4KB    
byte[] buffer = new byte[tamanho];    
int lidos = -1;    
while ((lidos = entrada.read(buffer, 0, tamanho)) != -1) {    
	fos.write(buffer, 0, lidos);
	System.out.println(lidos);
}    
fos.close();

Código servidor

int tamanho = 4096; // buffer de 4KB    
byte[] buffer = new byte[tamanho];    
int lidos = -1;    
while ((lidos = fis.read(buffer, 0, tamanho)) != -1) {    
	System.out.println(lidos);  
	saida.write(buffer, 0, lidos);    
}    
saida.flush();  
System.out.println("Arquivo enviado!");
bis.close();

Só que ao terminar de enviar os bytes, o servidor exibe a mensagem: “Arquivo enviado”, já o cliente parece esperar por mais bytes, mesmo mostrando que foram lidos 260 bytes no último looping. Alguém tem ideia do que pode ser isso?

2 Respostas

ViniGodoy

Sem adicionar a informação de quantos bytes devem ser lidos, o cliente vai mesmo ler eternamente. Não é papel do socket controlar esse tipo de informação.

ViniGodoy

Não duplique tópicos:

Criado 17 de abril de 2015
Ultima resposta 18 de abr. de 2015
Respostas 2
Participantes 2