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

Auteur Sujet: [SFML2] Connexion NotReady (Résolu)  (Lu 4030 fois)

0 Membres et 1 Invité sur ce sujet

Rodd

  • Newbie
  • *
  • Messages: 43
    • Voir le profil
    • E-mail
[SFML2] Connexion NotReady (Résolu)
« le: Août 26, 2012, 05:31:52 pm »
Bonjour à tous, je débute sfml dans le réseau mais je ne suis pas tombé sur un bug bloquant. Plutôt une mauvaise utilisation faut croire..

Voilà le problème. J'ai crée un serveur et un client, deux programmes différent. La connexion fonctionne mais uniquement sur le réseau local.

//Client
std::cout<<"Connecting ... ";
sf::Socket::Status soso = client.connect(address, 33033);
if(soso == sf::Socket::Done){
    std::cout<<"Done";}
else if(soso == sf::Socket::AnyPort){
    std::cout<<"Anyport";}
else if(soso == sf::Socket::Disconnected){
    std::cout<<"Disconnected";}
else if(soso == sf::Socket::Error){
    std::cout<<"Error";}
else if(soso == sf::Socket::NotReady){
    std::cout<<"NotReady";}
else{
    std::cout<<"WTF?";}
 

Lorsque je rentre mon IP internet à la place d'address, rien ne se passe. Mais lorsque je tape "127.0.0.1", la connexion se fait, et donc je peux envoyer des données et en recevoir sans aucun problème mais lors de la connexion ce n'est pas "Done" qu'il s'écrit mais bien "NotReady".

Donc:
  • "127.0.0.1" fonctionne parfaitement mais affiche NotReady à la connexion.
  • L'adresse par internet ne fonctionne pas = aucune connexion détectée.


Comment se fait-il ? Merci de votre explication. :)
« Modifié: Septembre 06, 2012, 09:13:20 pm par Rodd »

Rodd

  • Newbie
  • *
  • Messages: 43
    • Voir le profil
    • E-mail
Re : [SFML2] Connexion NotReady
« Réponse #1 le: Août 26, 2012, 05:44:37 pm »
Je précise que je suis en non-bloquant =)

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32504
    • Voir le profil
    • SFML's website
    • E-mail
Re : [SFML2] Connexion NotReady
« Réponse #2 le: Août 26, 2012, 05:45:07 pm »
Il faut configurer ton routeur et/ou ton pare-feu pour qu'il laisse passer la connexion.

Et connect ne fonctionne pas toujours en mode non-bloquant, fais ça après la connexion.
Laurent Gomila - SFML developer

Rodd

  • Newbie
  • *
  • Messages: 43
    • Voir le profil
    • E-mail
Re : [SFML2] Connexion NotReady
« Réponse #3 le: Août 26, 2012, 06:05:29 pm »
http://img51.imageshack.us/img51/47/62424894.png

Pourtant il me semblait avoir bien ouvert mon port. Il faut un certain délai ou un reboot du routeur pour que ca soit effectif ?

Qu'entendez-vous par après ? Je refais une même connexion par après ?

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32504
    • Voir le profil
    • SFML's website
    • E-mail
Re : [SFML2] Connexion NotReady
« Réponse #4 le: Août 26, 2012, 06:56:27 pm »
Citer
Pourtant il me semblait avoir bien ouvert mon port.
Ca n'a pas l'air. Moi j'irai plutôt voir dans "Firewall".

Citer
Qu'entendez-vous par après ? Je refais une même connexion par après ?
Non, tu passes en mode non-bloquant après la connexion. Puisque connect ne marche pas bien en mode non-bloquant.
« Modifié: Août 26, 2012, 06:58:00 pm par Laurent »
Laurent Gomila - SFML developer

Rodd

  • Newbie
  • *
  • Messages: 43
    • Voir le profil
    • E-mail
Re : [SFML2] Connexion NotReady
« Réponse #5 le: Septembre 06, 2012, 08:19:46 pm »
Merci beaucoup, ça marche super maintenant !

J'ai une dernière petite question avant de clôturer le sujet comme résolu..
Lorsqu'on essaye de mettre en place un serveur Udpsocket, on doit supprimer/recréer un nouveau Udpsocket après chaque donnée reçue ? Ou on peut utiliser le même socket lié au port à chaque tour de boucle ? :)

Merci !

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32504
    • Voir le profil
    • SFML's website
    • E-mail
Re : [SFML2] Connexion NotReady
« Réponse #6 le: Septembre 06, 2012, 08:49:38 pm »
Pourquoi faudrait-il le recréer à chaque fois ? C'est pas des sockets jetables ;)
Laurent Gomila - SFML developer

Rodd

  • Newbie
  • *
  • Messages: 43
    • Voir le profil
    • E-mail
Re : [SFML2] Connexion NotReady
« Réponse #7 le: Septembre 06, 2012, 09:12:36 pm »
Effectivement je viens de revérifier mon code de test et c'est une erreur de ma part.

Un grand merci pour ton aide =)

kamui

  • Sr. Member
  • ****
  • Messages: 291
    • Voir le profil
Re : Re : [SFML2] Connexion NotReady
« Réponse #8 le: Septembre 26, 2012, 02:21:18 pm »
Pourquoi faudrait-il le recréer à chaque fois ? C'est pas des sockets jetables ;)

il a pas de machine à laver.........[-]

Bon sinon bonjour tout le monde,

je préfère poster là plutôt que de recréer un topic (et ça me fait un bon prétexte pour poster ma blague miteuse ;D) car je penses que cela a un rapport.

voilà je suis en train de faire un client/serveur basique et tout fonctionne bien, mais j'ai à mon avis mal compris certaines notions car je suis obligé d'appeler plusieurs fois la méthode connect de mon listener côté server pour qu'il arrive à se mettre en place :

j'obtiens en console :

impossible de se connecter a ce port
Failed to bind listener socket to port 50001
en attente d'une connexion client...
 

le premier message est de moi et s'affiche si l'appel à connect() a échoué, la deuxieme c'est SFML qui génère ce message je penses, et le troisième c'est encore moi pour quand tout est OK.

Un petit bout de code :

bool Server::waitForConnection()
{
    if (!socket_trouduc_serveur->listen(port))
    {
        std::cerr << "impossible de se connecter a ce port" << std::endl;
        return false;
    }
    else
    {
        std::cerr << "en attente d'une connexion client..." << std::endl;
        return true;
    }
}
 

et dans mon main je suis obligé de faire :
while (!s.waitForConnection());
 

Une idée de ce que je n'ai pas compris ?
« Modifié: Septembre 26, 2012, 02:23:17 pm par kamui »

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32504
    • Voir le profil
    • SFML's website
    • E-mail
Re : [SFML2] Connexion NotReady (Résolu)
« Réponse #9 le: Septembre 26, 2012, 02:52:23 pm »
Il faut juste que tu lises attentivement la documentation des fonctions que tu utilises ;)

Ensuite fais gaffe à ce que tu dis, tu n'arrêtes pas de mélanger "connect" et "listen", j'avais rien compris avant de lire ton code à la fin.
Laurent Gomila - SFML developer

kamui

  • Sr. Member
  • ****
  • Messages: 291
    • Voir le profil
Re : [SFML2] Connexion NotReady (Résolu)
« Réponse #10 le: Septembre 26, 2012, 03:06:27 pm »
ah ouio pardon, c'est listen (j'écris rapidement parce que je suis au boulot donc je fais/dis des conneries)

Mais ok je vais regarder la doc alors, ton non étonnement m'en dit déjà long^^

merki ;)