Les "couches supérieures" s'appellent comment ? Et c'est traité à quel niveau le contrôle d'erreur et les demandes de renvoi ?
folco: les couches supérieures c'est http, ftp, ssh, et tutti quanti.
en gros tcp garantit que tout se passe bien, c'est quasi impossible que les données livrées par TCP soit corrompues à cause du réseau, principalement grâce à des checksums, et des numéros de séquence d'envoi/réception, couplé à des échanges ACK bien foutus qui ne ralentissent pas toute la connexion.
Bon alors j'ai un peu avancé.
Je ne saurais pas vraiment l'expliquer mais mes problèmes de sockets qui conprennaient pas que le gars en face avait fini de parler venait des types java que je prenais.
Le problème pour les néophytes comme moi c'est que java propose 15 000 classes plus ou ou moins bas niveau en fonction du type de données, et je ne me souviens plus du type que j'utilisait mais ce n'était pas le bon.
Maintenant je lis et j'écrit dans un DataInputStream/DataOutputStream et ça va beaucoup mieux.
Sinon pour le reste, toutes les strings passées "en clair" sont bien en UTF16-LE. Les bouts de binaires qui se baladent sont des bouts de GZip qu'il suffit d'empiler dans un fichier pour obtenir un fichier tout propre et tout dézippable (contenant lui même pleins de texte en UTF16-LE.
Bref merci de votre aide, j'ai finit d'implémenter ma classe de dialogue avec le serveur (les checksums qui passent sont des CRC32 btw), et j'enterre déjà la solution existante niveau perf (1min55 au lieu de 12 min pour un échange de fichier).
