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

Auteur Sujet: Socket qui bloque sur NotReady ! / Problème de paquets...  (Lu 24036 fois)

0 Membres et 1 Invité sur ce sujet

Crone123

  • Full Member
  • ***
  • Messages: 141
    • Voir le profil
Re : Socket qui bloque sur NotReady ! / Problème de paquets...
« Réponse #45 le: Juin 07, 2013, 10:14:01 pm »
Bah, en tout cas j'ai tout testé, le bug viens a tous les coups de l'envoi par la SFML (ou de la réception), de mon coté le code s’exécute a chaque fois correctement (j'ai passé du temps pour tester tout ça)

Je vais essayer de recompiler la lib avec l'autre modif que tu m'avais dit la dernière fois. Je sais pas si ça a vraiment une chance de marcher, mais je peux toujours essayer.

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32498
    • Voir le profil
    • SFML's website
    • E-mail
Re : Socket qui bloque sur NotReady ! / Problème de paquets...
« Réponse #46 le: Juin 07, 2013, 10:29:30 pm »
Quelle modif ?
Laurent Gomila - SFML developer

Crone123

  • Full Member
  • ***
  • Messages: 141
    • Voir le profil
Re : Socket qui bloque sur NotReady ! / Problème de paquets...
« Réponse #47 le: Juin 07, 2013, 10:30:57 pm »
Je pensais a ce que tu m'avais sortit:
https://github.com/SFML/SFML/issues/72
Mais en fait, ça n'as un peu rien a voir finalement...

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32498
    • Voir le profil
    • SFML's website
    • E-mail
Re : Socket qui bloque sur NotReady ! / Problème de paquets...
« Réponse #48 le: Juin 07, 2013, 10:31:41 pm »
Oui en effet ;)
Laurent Gomila - SFML developer

Crone123

  • Full Member
  • ***
  • Messages: 141
    • Voir le profil
Re : Socket qui bloque sur NotReady ! / Problème de paquets...
« Réponse #49 le: Juin 07, 2013, 10:34:10 pm »
Mais mon char * est envoyé directement?

Parce que je ne vois pas pourquoi j'ai des problèmes comme ça, nul part dans mon code ça ne crée ce problème... la ligne avant l'envoi toutes les données sont impeccables, j'envoie, et la ligne juste après la réception j'ai des octet qui se sont incrustés dans le paquet...

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32498
    • Voir le profil
    • SFML's website
    • E-mail
Re : Socket qui bloque sur NotReady ! / Problème de paquets...
« Réponse #50 le: Juin 07, 2013, 11:16:02 pm »
Là ça doit être autre chose. Si tu peux reproduire le problème dans un code complet minimal, j'essayerai de tester.
Laurent Gomila - SFML developer

Crone123

  • Full Member
  • ***
  • Messages: 141
    • Voir le profil
Re : Socket qui bloque sur NotReady ! / Problème de paquets...
« Réponse #51 le: Juin 07, 2013, 11:27:34 pm »
Euh, bah, si j'ai le temps j'essaierais de reproduire ça, mais bon, je sens que je vais encore mettre un bout de temps avant de réussir a faire ça....

J'ai remarqué un truc aussi, a prendre ou pas:
A l'origine, où ça ne bugguait pas, les données ne circulaient que dans 1sens.

En gros, j'envoyais du 1468o et l'autre devait tout récupérer ensuite.

Le problème c'est que en local ça marche, mais sur le réseau, ça fait trop de données d'un coup (a priori, bizarre, ça crashe pour envoyer 9mo en 10s alors que le SSH connecté me transfert du 80mo/s....sans problèmes....).
→ Mais dans ce cas là, c'est clairement une demande trop importante.

Donc, pour palier au problème, j'ai fait le système suivant:
On va appeler E l’émetteur, et R le récepteur.
E → Envoie 1468o avec 1460o de données dedans.
R → Réceptionne les données
R → Envoie 5o de données de confirmation
E → Réceptionne la confirmation
E → Envoie 1468o avec 1464o de données dedans.
R → Réceptionne les données
R → Envoie la confirmation de 5o
etc...

Si les socket veulent bien marcher, le système fonctionne.
Mais bon, très souvent ça ça bug....


Je pense a un truc au fait:
Pour boost::asio, il ne faut pas que le buffer soit de la mémoire temporaire. (d'après ce que j'ai lu)
La SFML a telle la même restriction? (Si oui, ça peut expliquer quelques problèmes)
Enfin, jusqu'à maintenant, en dehors des quelques octet rajoutés de on ne sait pas où ça n'as jamais fait de segmentation fault a cause de ça...
Merci :)

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32498
    • Voir le profil
    • SFML's website
    • E-mail
Re : Socket qui bloque sur NotReady ! / Problème de paquets...
« Réponse #52 le: Juin 08, 2013, 09:05:51 am »
Citer
Pour boost::asio, il ne faut pas que le buffer soit de la mémoire temporaire. (d'après ce que j'ai lu)
La SFML a telle la même restriction?
Non. Les données sont copiées par les couches internes, tu n'as pas à te soucier de ça.
Laurent Gomila - SFML developer

Crone123

  • Full Member
  • ***
  • Messages: 141
    • Voir le profil
Re : Socket qui bloque sur NotReady ! / Problème de paquets...
« Réponse #53 le: Juin 08, 2013, 11:50:20 am »
OK, donc faudra essayer de reproduire le bug...

Crone123

  • Full Member
  • ***
  • Messages: 141
    • Voir le profil
Re : Socket qui bloque sur NotReady ! / Problème de paquets...
« Réponse #54 le: Juin 12, 2013, 06:37:45 pm »
En fait, je pense que si j'utilise des socket bloquants et que je les met en thread avec des mutex ça devrait faire l'affaire.
Je vais me coder une classe pour gérer ça, on verra bien :)

Crone123

  • Full Member
  • ***
  • Messages: 141
    • Voir le profil
Re : Socket qui bloque sur NotReady ! / Problème de paquets...
« Réponse #55 le: Juin 13, 2013, 01:49:50 am »
Le bug peut t-il provenir du fait que je n'utilise pas de sf::SocketSelector?
Le socket pouvant être testé via cet objet, mon code pourrait en fait utiliser le socket quand il n'est pas prêt non?
Merci :)

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32498
    • Voir le profil
    • SFML's website
    • E-mail
Re : Socket qui bloque sur NotReady ! / Problème de paquets...
« Réponse #56 le: Juin 13, 2013, 08:40:32 am »
Non, si la socket n'est pas prête elle te le dit tout simplement, sans provoquer d'erreur ou de choses bizarres.

Au lieu de jouer aux devinettes, ce qui peut litéralement durer des mois, tu devrais essayer de bidouiller ton code pour lui faire cracher plus d'informations. Réduis-le au minimum, fais des tests un peu plus restreints et ciblés que "faire tourner ta grosse appli", etc. C'est comme ça que ça marche ;)
« Modifié: Juin 13, 2013, 08:42:08 am par Laurent »
Laurent Gomila - SFML developer

Crone123

  • Full Member
  • ***
  • Messages: 141
    • Voir le profil
Re : Socket qui bloque sur NotReady ! / Problème de paquets...
« Réponse #57 le: Juin 13, 2013, 02:08:03 pm »
J'ai recrée un système de socket en mode bloquant.
J'utilise plusieurs threads pour gérer Envoi, Réception et Acceptation. (de façon a ce qu'il utilise des socket bloquants, mais sur des threads, donc non-bloquant pour le programme)
Après une série de test et d'optimisation du système, j'arrive a un truc qui marche correctement.
Donc j'ai encore des tests a faire pour assurer que c'est stable, mais a priori c'est vraiment le mode non-bloquant qui pose problème...