Cliente:
String fileName = fileName(fNome, ultimaData);
String directoryName = fileName(dNome, ultimaData);
File file = new File(directoryName + fileName);
FileInputStream in = new FileInputStream(file);
BufferedInputStream bis = new BufferedInputStream(
new FileInputStream(file));
OutputStream out = socket.getOutputStream();
BufferedWriter writer = new BufferedWriter(
new OutputStreamWriter(out));
writer.write(file.getName() + "\n");
writer.flush();
int bytesTransferidos = 0;
int tamanho = 1400; // buffer de 1400 Bytes
byte[] buffer = new byte[tamanho];
for (int nBytesLidos = bis.read(buffer); nBytesLidos > 0; nBytesLidos = bis.read(buffer)) {
bytesTransferidos += nBytesLidos;
out.write(buffer, 0, nBytesLidos);
out.flush();
}
System.out.println(fileName);
System.out.println(bytesTransferidos
+ " bytes transferidos.\n");
public void run() {
FileOutputStream out;
InputStream in;
try {
in = socket.getInputStream();
BufferedReader reader = new BufferedReader(
new InputStreamReader(in));
String fName = reader.readLine();
File arquivo = new File("C:/java/novo/" + fName);
out = new FileOutputStream(arquivo);
int bytesRecebidos = 0;
int tamanho = 1400; // buffer de 1400 Bytes
byte[] buffer = new byte[tamanho];
long mileSeconds = new Date().getTime();
for (int nBytesLidos = in.read(buffer); nBytesLidos > 0; nBytesLidos = in.read(buffer)) {
bytesRecebidos += nBytesLidos;
out.write(buffer, 0, nBytesLidos);
System.out.println(bytesRecebidos);
out.flush();
}
writer.write("ok");
writer.flush(); // deletar
long mileSecondsEnd = new Date().getTime();
System.out.println(bytesRecebidos + " bytes recebidos em " + (mileSecondsEnd - mileSeconds) + "ms : " + socket.getInetAddress() + "\n");
reader.close();
out.close();
} catch (IOException e) {
System.out.print(e);
System.out.println("Algum problema ocorreu para criar ou receber o socket.");
} finally {
try {
System.out.println("Conexao encerrada : " + socket.getInetAddress() + "\n");
socket.close();
} catch (IOException e) {
}
}
}
O problema é o seguinte, hora o arquivo é enviado inteiro hora o arquivo é enviado faltando 8kb.
Estou tentando fazer um while que abre vários clientes cada um enviando um arquivo diferente, nesse caso o servidor abre uma Thread para cada conexão nova e fica ouvindo enquanto existirem bytes, entretanto as vezes os arquivos corretamente outras vezes faltando os benditos 8kb, estou testando ambos Cliente e servidor na mesma máquina, algum problema ?
Alguém tem uma solução ou pode apontar meu erro ?
Abs, grato desde já.