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);
[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.
[2] Comentário enviado por ricardo_dias em 17/07/2013 - 18:03h
Você saberia me dizer como monitorar o trafego de arquivos pela rede, preciso de alguma solução para mim realizar um calculo para avançar a barra de progressão.. e não estou sabendo como..