Bienvenue, Invité. Merci de vous connecter ou de vous inscrire.
Avez-vous perdu votre e-mail d'activation ?

Auteur Sujet: Réception des packets en TCP.  (Lu 3763 fois)

0 Membres et 1 Invité sur ce sujet

Lolilolight

  • Hero Member
  • *****
  • Messages: 1232
    • Voir le profil
Réception des packets en TCP.
« le: Juin 15, 2013, 08:38:20 pm »
La réception des paquets ne se fait pas toujours correctement en TCP, la taille des messages est aussi limitée, j'ai l'impression que il n'y a pas de différence entre TCP et UDP, je ne sais pas quelle librairie dépende tu utilises pour la gestion du réseau mais elle ne semble pas très bien fonctionner surtout pour le TCP, bref c'est pas grave j'ai fais un test moi même à chaque fois que je reçois des données pour savoir si je les ai bien reçues ou alors si je ne les ai pas reçus je demande au serveur de les re-renvoyées mais bon je ne m'attendat pas à devoir faire ça en TCP. :/

G.

  • Hero Member
  • *****
  • Messages: 1593
    • Voir le profil
Re : Réception des packets en TCP.
« Réponse #1 le: Juin 15, 2013, 08:59:56 pm »
J'imagine que comme d'hab on va te demander un code minimal et complet qui reproduit le problème, alors pourquoi ne pas le donner directement ?
Avec plus de 200 messages ici tu devrais avoir compris le truc non ?
« Modifié: Juin 15, 2013, 09:02:03 pm par G. »

domoi

  • Newbie
  • *
  • Messages: 9
    • Voir le profil
Re : Réception des packets en TCP.
« Réponse #2 le: Juin 15, 2013, 11:56:45 pm »
Le module réseau de la SFML est un simple wrapper des sockets de Berkeley, ni plus ni moins.
Je rejoins le post du dessus, plus d'informations sont nécessaires : platforme, naggle on/off etc...

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32498
    • Voir le profil
    • SFML's website
    • E-mail
Re : Réception des packets en TCP.
« Réponse #3 le: Juin 16, 2013, 11:14:49 am »
Désolé, je vais être un peu direct, mais je pense que tu peux comprendre ce genre de choses, surtout que je te les ai déjà expliquées la dernière fois.

Venir sur le forum pour chouiner ça ne sert à rien. Présente-nous plutôt des faits précis, avec un code complet minimal à tester, et montre nous que tu as déjà dégrossi le problème avec des tests ciblés.

Franchement, là... qu'est-ce que tu veux que je te dise ?

Bon, ça c'est pour la forme, et pour tes prochains posts. Maintenant concernant ton problème TCP, il se pourrait que tu aies de la chance : https://github.com/SFML/SFML/pull/402

Note que ce ticket n'est pas tombé du ciel. La personne qui a eu ce problème s'est bougé le fion, a pu recevoir de l'aide d'autres membres, et finalement quelqu'un a trouvé d'où venait le problème. S'il était venu chouiner tous les jours sans plus de détails techniques, on en serait toujours au point de départ ;)
Laurent Gomila - SFML developer

Lolilolight

  • Hero Member
  • *****
  • Messages: 1232
    • Voir le profil
Re : Réception des packets en TCP.
« Réponse #4 le: Juin 16, 2013, 03:28:22 pm »
Ha bah voila, la réponse est dans ce ticket, la fonction receive ne reçoit que la 1ère partie du paquet TCP en mode non bloquant et puis renvoie Socket::NotReady.

Donc pas besoin que je reposte un code minimal et que je refasse des tests, le bug vient bien de la SFML qui en mode non bloquant en TCP ne reçois pas tout le message avant de renvoyer Socket::NotReady.

Bref c'est ce que j'ai compris en lisant les commentaires sur ce ticket.

Ok donc du coup je suis obligé de limiter la taille des paquets à envoyer.
Ou alors c'est un bug des sockets de Berkeley plutot, bref...
Et bon je fais exactement comme eux on fait, plusieurs appels à la fonction send pour envoyer le message.
Mes tests sont exactements pareils aux leurs, je ne vais pas reposter ce que eux ont déja poster.
Et bon cette fois j'ai fais des tests avant de venir chouiner.
Contrairement à mon dernier poste ou, bah, il fallait simplement que je prédise la position suivante par rapport au moment au le client reçoit les données et non par rapport au moment ou il les envoie, bien que normalement ça ne devait rien changer.
Bref je comprends mieux d'ou venaient tout ces bugs maintenant. :)
« Modifié: Juin 16, 2013, 03:40:00 pm par Lolilolight »

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32498
    • Voir le profil
    • SFML's website
    • E-mail
Re : Réception des packets en TCP.
« Réponse #5 le: Juin 16, 2013, 05:59:56 pm »
Si tu es certain que c'est bien ça, pas besoin de refaire des tests ou d'en rediscuter, en effet ;)

Si tu as un petit doute, tu peux essayer le patch proposé dans le ticket (mais il te faudra recompiler SFML).
Laurent Gomila - SFML developer

Lolilolight

  • Hero Member
  • *****
  • Messages: 1232
    • Voir le profil
Re : Réception des packets en TCP.
« Réponse #6 le: Juin 16, 2013, 07:27:49 pm »
Ok je vais essayer ce patch!  :)

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32498
    • Voir le profil
    • SFML's website
    • E-mail
Re : Réception des packets en TCP.
« Réponse #7 le: Juin 17, 2013, 06:47:06 pm »
J'ai pushé la modif, donc si tu veux essayer y a qu'à chopper les dernières sources ;)
Laurent Gomila - SFML developer

Lolilolight

  • Hero Member
  • *****
  • Messages: 1232
    • Voir le profil
Re : Réception des packets en TCP.
« Réponse #8 le: Juin 17, 2013, 07:01:26 pm »
Ok bah demain je test ça avec un code minimal pour voir car me retrouver avec un écran noir de temps en temps en pleins combat parce que je n'ai pas reçus les données ou alors mon appli qui bloque c'est un peu embêtant. :/