[AJUDA] Transferência de dados por socket ( lento demais )

Boa tarde pessoal, meu problema é o seguinte…

Eu desenvolvi uma aplicação cliente/servidor que tem o propósito de pegar um arquivo como por exemplo uma música de um lado, carregar ela em um array de bytes, passar para o cliente, que a remontará. Acontece que a transferência está EXTREMAMENTE lenta. Levando mais de uma hora simplesmente para enviar uma música.

dos = new DataOutputStream(socket.getOutputStream());
dos.write(byteArray[indice]);

Eu imagino que esteja demorando tanto para transferir porque o socket transforma os bytes em string antes de enviar, e depois remonta as strings em bytes do outro lado.

Alguém pode me dar uma luz em como resolver esse problema de lentidão na transferência?

Já me falaram em serializção…

Obrigado.

Cara, o que tá acontecendo, ao meu ver, é que vc está mandando byte a byte.
Para ter velocidade, você precisa pelo menos de um buffer

Nesse caso, que envolve transferencia de arquivo, seria bom você dar uma olhada em NIO, e na classe ByteBuffer

Na net tem exemplos de como transferir arquivos com sockets

Sim, a transferência é byte a byte. Pode ser que isso realmente seja o que está atrasando a transferência. É possível transferir todo um buffer de bytes de uma vez só? Vou dar uma estudada no que você me falou e trarei respostas.

Obrigado.

Lembra que uma socket, por natureza, eh um OutputStream no java

Vc pode usar um Writer para escrever até arrays de bytes cheios.

usa um buffer de 32k, ajuda bastante na velocidade

qmx, eu nao estou certo de como usar esse buffer de 32 k, vc poderia me dar um exemplo? um algoritmo em pseudo linguagem?

valew abrs