Enviar arquivos via socket

4 respostas
P

Olá pessoal…

Já li todas as dúvidas sobre como enviar um arquivo via socket e estou tentando fazer um módulo cliente no java que só receberá uma imagem enviada pelo servidor em C++.

No C++ eu to colocando um FileStream em um buffer e estou enviando esse buffer inteiro pro Java.

Ele tá transferindo todos os bytes da figura original, mas quando eu tento abrir a figura recebida, ele dá um problema dizendo que o tipo do arquivo é desconhecido.

Abaixo vai o meu código em java…se alguém puder me ajudar eu agradeceria muito…

public static void main(String[] args) { 
        try{ 
            Socket conexao = new Socket("127.0.0.1", 5000); 
            DataInputStream entrada = new DataInputStream(conexao.getInputStream());
            FileOutputStream saida = new FileOutputStream(new File("teste.bmp"));
 
            int tam = Integer.parseInt(entrada.readLine());
            System.out.println(Integer.toString(tam));            
            byte[] b = new byte[200000];

            entrada.read(b,0, tam);
            
            saida.write(b, 0, tam);
            saida.flush(); 
            
//            int i = 0;             
//            while((i = entrada.available()) != -1) {
//                saida.write(entrada.readByte());
//            }


            entrada.close();
            saida.close();
            conexao.close();
            System.out.println("Transferência completa");            
        } catch(Exception ex) { 
            System.out.println("Erro: " + ex); 
        } 
    }

Desculpem o código…tá super tosco e eu to tentando várias abordagens diferentes pro problema…

Abraços e agradeço desde já…

4 Respostas

S

File file = new File(“myimage.gif”);
FileInputStream fis = new FileInputStream(file);

eu não sei se pode ser isso, mas testa aí.
tenta transformar pra um File.
Essas classes ai em cima são usadas pra inserir um arquivo de imagem em um BD, talvez sirva pra alguma coisa.

P

Valeu pela dica Sdrubow…mas mesmo assim ainda continua não funcionando…depois que o arquivo é transferido, eu vou verificar as propriedades do arquivo e as propriedades são exatamente iguais à do arquivo original…só que quando eu tento abrir o arquivo recebido pelo socket dá um erro: “Não é possível determinar o tipo”

To lendo tudo que eu acho na net pra ver se consigo fazer isso funcionar…mas qualquer ajuda é sempre bem vinda…

[]s e obrigado pelos que sempre me ajudam aqui no forum…

S

cara na época da faculdade eu fiz um socket em C++

ele sempre enviava lixo no final da transmissão por eu usar um buffer de tamanho fixo.

P

O meu buffer não é de tamanho fixo…infelizmente não to consigo achar o erro…

To mais perdido que filho da puta em dia dos pais…mas é isso ae…

Valeu pela ajuda…

Criado 28 de janeiro de 2005
Ultima resposta 15 de fev. de 2005
Respostas 4
Participantes 2