J'essaie de développer une application de transfert de fichiers en Java, avec une applet en tant que client, et une application Java autonome en tant que serveur (sur une machine dédiée hébergée dans un datacenter). J'utilise DataOutputStream/DataInputStream pour transférer les données des deux côtés. Lorsque j'envoie de gros volumes de données, la bande passante est très variable: tout va bien d'abord, puis le flux tcp est gelé pendant 40-50 secondes alors que rien ne se transfère, puis il recommence.Sockets Java et tuning TCP
Lorsque je regarde le flux tcp avec Ethereal, je vois des doublons, des retransmits rapides et des retransmissions de tcp. Mais je ne pense pas que le problème provient de Java: j'ai le même problème avec les transferts FTP dans FileZilla. Mais ... quand j'essaie de transférer des données en utilisant netcat (client netcat + serveur netcat), tout va bien, la bande passante est stable, les paquets tcp perdus semblent être retransmis immédiatement sans aucune pause, quel que soit le volume transféré.
Il est comme si Java n'a pas été aussi talentueux que netcat pour jouer avec des flux tcp ...
J'ai essayé de jouer avec Socket.setSendBufferSize(), mais je ne vois aucune différence. Une idée?
Merci! Et désolé pour mon mauvais anglais ...
dup: http://stackoverflow.com/questions/1169739/java-tcp-socket-data-transfer-is-sloooooow – amischiefr