Boa tarde pessoal implementei uma solução em Socket para transferir um arquivo do Servidor Socket pra aplicação cliente Socket está funcionando corretamente porem o tamanho do arquivo final fica diferente do arquivo original, o que pode ser ?
Segue minha implementação
Client Socket
//importacao das classes net (pilha TCP/IP) e io (entrada e saida)
import java.io.FileOutputStream;
import java.io.DataInputStream;
import java.net.*;
public class ClienteFTP {
public static void main(String[] args) throws Exception {
Socket socket = new Socket("localhost", 13);
System.out.println("Conectado: " + socket.isConnected());
//FileOuputStream para salvar o arquivo recebido
FileOutputStream sarq = new FileOutputStream("C:/Files/Baixados/F2.txt");
// DataInputStream para processar os bytes recebidos
DataInputStream entrada = new DataInputStream(socket.getInputStream());
byte[] br = new byte[2048];
int leitura = entrada.read(br);
while(leitura != -1) {
if(leitura != -2) {
sarq.write(br, 0, leitura);
}
leitura = entrada.read(br);
}
socket.close();
entrada.close();
sarq.close();
}
}
Server Socket
import java.net.*;
import java.io.*;
public class ServerFTP {
public static void main(String[] args) {
try {
//cria o objeto socket servidor para a porta 13
ServerSocket server = new ServerSocket(13);
//aceita a conexao socket
Socket clSocket = server.accept();
System.out.println("Conexao aceita por: " + clSocket.getInetAddress().getHostName());
File f1 = new File("C:/Files/ServFile/F2.txt");
DataOutputStream out = new DataOutputStream (clSocket.getOutputStream());
/* abrir arquivo para o envio */
FileInputStream fin = new FileInputStream (f1);
DataInputStream in = new DataInputStream (fin);
/* cria um buffer de 512 bytes para o envio */
byte[] buffer = new byte[2048];
//int cont =0;
/* envia os dados :) */
while (in.read(buffer) != -1) {
out.write(buffer,0,buffer.length);
}
fin.close();
out.flush();
out.close();
}catch (Exception e){
System.out.println(e);
System.exit(0);
} finally {
}
}
}
o que devo fazer para que o arquivo final fique exatamente igual ao original ?
desde ja agradeço