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. :)
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 ?