Problemas com socket

1 resposta
T

Boa tarde galera, fiz um sisteminha de FTP. tah show de bola, faz upload e download direitinho, soh q nao consigo fazer dois downloads seguidos, pois retorna o erro ‘Socket is closed’

Segue o código de download (no server)

public void downloadFile(DataInputStream inFile, File file) {
        try {
            BufferedOutputStream outBuffer = new BufferedOutputStream(socketDados.getOutputStream());
            int tamanhoArquivo = 0;
            long antes = System.currentTimeMillis();
            int tamanhoTotalCopiado = 0;
            byte[] buffer = new byte[1024];
            outputStream.writeObject(Util.NOMEARQUIVODOWNLOAD + " " + file.getParent() + "(SERVER)" + file.getName());
            while ((tamanhoArquivo = inFile.read(buffer)) > 0) {
                outBuffer.write(buffer, 0, tamanhoArquivo);
                tamanhoTotalCopiado += tamanhoArquivo;
                System.out.println("[SERVER] Enviando arquivo... " + tamanhoTotalCopiado + " bytes");
            }
            inFile.close();
            outBuffer.flush();
            outBuffer.close();
            socketDados.close();
            long depois = System.currentTimeMillis();
            System.out.println("\n[SERVER] Tempo total para o download: " + new Long(depois - antes) + " ms");
        } catch (IOException ex) {
            System.out.println("[SERVER] Erro ao fazer o upload do arquivo!");
            ex.printStackTrace();
        }
    }

Na linha outBuffer.close() automaticamente o socketDados também é fechado, então na próxima vez que eu fizer um download, retornará socket is closed na linha 3.
Gostaria de saber como faço esse lance, pro socket ficar ativo de novo mesmo com o outBuffer.close();

Desde já agradeço

1 Resposta

marcusmage

Transforma seu código em um server multithread.

  1. Cria uma classe que implementa o atendimento da tarefas ( download, upload ) como thread
  2. Monta um loop infinito para atender a cada requisição de (download, upload) e de acordo com a tarefa vc dispara a thread.

blz!
Acho que o resto é moleza .

Criado 18 de abril de 2009
Ultima resposta 18 de abr. de 2009
Respostas 1
Participantes 2