Forum de la communauté SFML

Aide => Réseau => Discussion démarrée par: AnthonyMew le Octobre 28, 2016, 11:55:49 pm

Titre: [RÉSOLU] Module Network ne fonctionne pas avec OS X / Xcode
Posté par: AnthonyMew le Octobre 28, 2016, 11:55:49 pm
Bonjour à tous,  ;)

Je suis en ce moment en train de réaliser un jeu avec la SFML et Xcode, et j'ai un gros problème concernant la partie réseau : J'ai l'impression qu'aucune fonction de connexion ne marche. J'ai commencé avec sf::TcpSocket, et avec le code d'exemple que j'ai rapidement repris :

#include <iostream>

#include <SFML/Network.hpp>

    int main() {
    sf::TcpSocket Socket;
    std::cout << "Statut de connexion : ";
    sf::Socket::Status Status =Socket.connect("127.0.0.1", sf::TcpSocket::Anyport);
    std::cout << Status;
    return 0;
}
 

(Sachant que le problème est exactement le même qu'elle que soit l'IP ou le port)

Le problème est que le code retourne systématiquement 4, ce qui correspond, d'après la documentation SFML à "Error". J'ai essaye avec les sockets UDP et j'ai le même problème.
Ensuite, j'ai tenté de faire une connexion HTTP, et en me connectant sur une page de mon site web. (Page testé avant et qui fonctionne sans problème, qui enregistre l'IP et la date de la connexion dans la base de données à chaque affichage, ce qui me permet de vérifier dans la base de donnée que mon application SFML à bien chargé la page) Malheureusement, la fonction Response.getStatus() renvoie 1000, ce qui correspond à InvalidResponse, (Response is not a valid HTTP one) d'après la documentation du site. Je ne poste pas de code, mais j'ai quasiment le même que le tutoriel officiel. Je précise que j'ai OS X El Capitan, Xcode 7.3.1 et que j'utilise la SFML 2.3. Evidemment, la connexion internet était parfaitement fonctionnelle lors de mon test.
Merci d'avance pour vos réponses.  :)
Titre: Re : Module Network ne fonctionne pas avec OS X / Xcode
Posté par: Hiura le Novembre 01, 2016, 08:43:32 pm
Quand tu tentes d'ouvrir une connection TCP avec le serveur, tu utilises quoi comme code du côté serveur ? Et pour la version HTTP, que renvois exactement le serveur ? Sans setup & code complet, c'est dur de mettre le doigts sur le vrai problème.

(PS: tu auras p-ê plus de réponse, ou de meilleures réponses, sur le forum anglais...)
Titre: Re : Module Network ne fonctionne pas avec OS X / Xcode
Posté par: AnthonyMew le Novembre 01, 2016, 09:42:49 pm
Bonsoir,

Tout d'abord, merci pour cette réponse.
Je n'ai pas testé de code niveau serveur, car si le message n'est pas envoyé avec sf::TcpSocket, le serveur, peu importe le code, ne va rien recevoir.

Ensuite, pour la version HTTP, je me suis rendu compte que mon problème ne se présente pas à chaque fois, par
exemple si je fais une connexion vers un site comme cela :

#include <iostream>

#include <SFML/Network.hpp>

    int main() {
    sf::Http Http("http://www.sfml-dev.org");
    sf::Http::Request Request;
    sf::Http::Response Response =Http.sendRequest(Request);
    std::cout << Response.getStatus();
    }
 

Alors le résultat affiché est bien 200, ce qui signifie qu'il n'y a pas eu de problèmes. Par contre, si je redirige vers une sous-page, comme http://www.sfml-dev.org/changelog.php, alors le résultat est 1000, ce qui correspond à une " InvalidResponse" ?

Et oui, je crois que je vais aller voir sur le forum anglais...
Merci.  :)
Titre: Re : Module Network ne fonctionne pas avec OS X / Xcode
Posté par: Hiura le Novembre 02, 2016, 11:34:52 am
Ça marche bien chez moi.

#include <iostream>

#include <SFML/Network.hpp>

int main() {
    sf::Http Http("http://www.sfml-dev.org");
    sf::Http::Request Request("changelog.php");
    sf::Http::Response Response = Http.sendRequest(Request);
    std::cout << Response.getStatus();
    return 0;
}

Peut-être as-tu mis la sous-page dans le host name ?
Titre: Re : Module Network ne fonctionne pas avec OS X / Xcode
Posté par: AnthonyMew le Novembre 02, 2016, 07:45:06 pm
Oui voila, ça marche enfin. J'avais fait :

 sf::Http Http("http://www.sfml-dev.org/changelog.php");

Ce qui posait problème. Merci beaucoup.  ;D