J'ai eu une autre question à propos de ce problème, mais je n'ai pas demandé correctement, alors là je vais encore! J'envoie un fichier en l'envoyant par morceaux. En ce moment, je joue avec des nombres différents pour la taille de ce morceau, pour voir quelle taille est la plus efficace.Bizarre problème send() (avec le journal Wireshark)
Lors du test sur localhost, toute taille de bloc semble fonctionner correctement. Mais quand je l'ai testé sur le réseau, il semble que la taille maximale des segments soit de 8191 octets. Si j'essaie quelque chose de plus élevé, le transfert devient extrêmement, péniblement, lentement. Pour voir ce qui se passe, voici les 100 premières lignes de journaux Wireshark lorsque j'utilise une taille de bloc de 8191 octets, et quand j'utilise une taille de bloc de 8192 octets: (l'expéditeur est 192.168.0.102, et le récepteur est 192.168.0.100)
8191: http://pastebin.com/E7jFFY4p
8192: http://pastebin.com/9P2rYa1p
Remarquez comment dans le journal 8192, sur la ligne 33, le récepteur prend beaucoup de temps pour ACK les données. Cela se produit de nouveau à la ligne 103 et à la ligne 132. Je crois que ce retard est la racine du problème.
Notez que je n'ai pas modifié l'option SO_SNDBUF ni l'option TCP_NODELAY. Pourquoi ma demande est-elle, pourquoi est-ce que je reçois des accusés de réception différés lors de l'envoi de fichiers en blocs de 8192 octets, alors que tout fonctionne correctement avec des blocs de 8191 octets?
Pourriez-vous montrer un code? Cela pourrait nous donner une meilleure idée de ce qui se passe. De plus, votre code fonctionne-t-il des deux côtés? ou juste 1 côté de la connexion? – Pretzel
J'ai ajouté un pseudo-code des sections pertinentes. – Meta