Boa tarde pessoal,
Estou testando um software de socket porem estou querendo uma perfomance maior na transferencia, existe algumacoisa que possa ser feita para aumentar essa performance, o meu objetivo eh deixar o socket estourando a rede porem o processamento da maquina liberado, o processamento esta ok, porem o socket nao esta usando o maximo da rede.
Eu vi pelo grafico que fica no gerenciador de tarefas do windows, e eu estou usando a propria classe Socket do Java…desculpa mas esses programas que vc me disse eu nunca ouvi falar.
Entao eh o seguinte, vou explikar mais detalhadamente, meu client esta em java/ windows e meu server em C++/Linux, numa copia de arquivo simples pelo samba, medindo no linux via iptraf minha taxa de transferencia chega a 80Mbs, e quando eu faço isso via socket, minha taxa nao consegue passar de 12Mbs.
Eu testei com um Server e um Client em Java e ambos rodando no windows, e a taxa foi ainda pior, nao passou de 5%.
Jah tentei passar pro socket com os streams:
SocketOutputStream
OutputStream
DataOutPutStream
e nenhum chega a taxa de transferencia da copia simples via samba, o que teve melhor desempenho foi o OutputStream que foi o que chegou a 12Mb.
Nao sei se eh possivel eu chegar igual a taxa da copia, mais gostaria de pelo menos aumentar um pouco, pois 12Mbs para 80Mbs eh bastante diferença.
Entao, estava usando, porem depois de varios testes com e sem, removi, agora estou usando Outputstream puro, mais msm assim nao consegue pegar uma taxa boa…eu ouvi falar sobre NIO, nao sei se alguem jah usou e se eh possivel usar com socket, vou dar uma pesquisada mais sobre isso, pois nao sei mais o que modificar.
[quote=rogelgarcia]Tem um método write do socket… que recebe um array de bytes… usa esse método…
E uma o mesmo array para mandar os bytes… tipo assim
byte[] array = new byte[1024];
while(temDados){
preencheArray(array);
out.write(array);
}
Tem o tamanho ótimo do array… que terá mais eficiencia…
Deve ter algoritmos na internet mostrando a melhor forma de usar output stream (mesmo com o bufferedwriter nao é a forma mais otimizada)
[/quote]
Consegui,
voltei a colocar o OutPutStream e um BufferedOutputStream, tanto no server como no cliente e a taxa aumentou demais, consegui pegar 100% da rede.
eu ja tinha feito isso, porem como meu server eh em C++, tive que axar agora um jeito de criar um Generico de Buffered.
valeu, resolvido.