Linux slogan
Visite também: Segurança Linux · BR-Linux.org · Dicas-L · Doode · NoticiasLinux · SoftwareLivre.org · UnderLinux



» Screenshot
» Login
Login:
Senha:

Se você ainda não possui uma conta, clique aqui.

Esqueci minha senha


Dica

Transferência de arquivos binários em Java
Linux user
Publicado por João Gabriel Canhoto em 03/10/2005

Login: sheepman, 23648 pontos
[ Hits: 11156 ]

Transferência de arquivos binários em Java

Eu sempre gostei muito de programar para redes, mas estava habituado a programar em C e quando eu descobri o Java, descobri um mundo inteiro de oportunidades e facilidades e principalmente... um mundo sem "segment fault". eheheh

Esta minha dica é para mostrar que é muito fácil criar um servidor para transferência de arquivos binários através da rede.

Aqui vai o meu exemplo (tentei comentar o máximo possível):

import java.net.*;
import java.io.*;

/* Esta class cria uma Thread */
public class ServerMe extends Thread {

    /* declara variável e inicia com valor null */
    ServerSocket lista = null;
    /* declara o socket cliente e inicia com valor null */    
    Socket cliente = null;

    private final int port = 999;
    private final String filename = "teste.zip";

    private void IniciaServer(){

        /* tenta iniciar o listen do server, se não sai */
        try {
            lista = new ServerSocket(port);        
        }catch(Exception e){
            System.out.println(e);
            System.exit(0);
        }

        /* while infinito , para que o server aceite várias conexões
         * em diferentes tempos .
         */

        while (true) {

            try {

                /* pronto o servidor aceitou o cliente  */
                cliente = lista.accept();

                /* agora e so preparar o outputstream para enviar o arquivo */

                DataOutputStream out = new DataOutputStream (cliente.getOutputStream());

                /* abrir arquivo para o envio  */
                FileInputStream fin = new FileInputStream (filename);
                DataInputStream in = new DataInputStream (fin);

                /* cria um buffer de 512 bytes para o envio */
                byte buffer[] = new byte[512];            

                /* envia os dados :) */
                while (in.read(buffer) != -1)
                    out.write(buffer,0,buffer.length);

            }catch (Exception e){
                System.out.println(e);
                System.exit(0);
            } finally {

                /* tenta fechar o cliente  */
                try {
                    cliente.close();
                }catch (Exception e) {
                    System.exit(0);
                }

            }

        }

    }

    /* Método herdado de Thread
    * este metodo e chamado quando se iniciar a thread
  */
    public void run(){
        IniciaServer();
    }
}

Pronto, este é um servidor que envia arquivos. Agora convido o leitor para programar um cliente para receber este arquivo! Fiquem bem e até a próxima.


Outras dicas deste autor

Leitura recomendada
   Dica Linux recomendada Usando sockets em Java - Comunicação com um servidor
   Dica Linux recomendada Iniciando JBoss sem privilégios - Erro: "java.net.SocketException: Permission denied" [Resolvido]
   Dica Linux recomendada Sinal EOF ou EOT com sockets
   Dica Linux recomendada Tomcat dentro do Eclipse
   Dica Linux recomendada Gerenciando emails pelo console no Fedora Core 5

Comentários
[1] Comentário enviado por brenner.toledo em 27/07/2006 - 15:57h:

Muito bom o artigo. Parabéns, muito bem comentado. Gostei, principalmente porque eu trabalho com sockets em Delphi 2005 e estava com o desafio de "traduzir" um código de Pascal para Java e explica certinho como proceder Cliente/Servidor. Valeu, ajudou muito.



Contribuir com comentário


  
Para executar esta ação você precisa estar logado no site, caso contrário, tudo o que for digitado será perdido.
Responsável pelo site: Fábio Berbert de Paula - Conteúdo distribuído sob licença GNU FDL
Site hospedado por:

Viva o Linux

A maior comunidade Linux da América Latina! Artigos, dicas, tutoriais, fórum, scripts e muito mais. Ideal para quem busca auto-ajuda em Linux.