Forum de la communauté SFML

Aide => Réseau => Discussion démarrée par: Otruch le Mai 09, 2015, 06:13:00 pm

Titre: [Résolu]TcpSocket ne se connecte pas à mon serveur ruby
Posté par: Otruch le Mai 09, 2015, 06:13:00 pm
Bonjour,

je souhaite créer un client simple en c++ via SFML qui se connecte à un serveur ruby. J'ai fais un serveur simple et un client simple pour mes tests. Seulement le client tcp ne se connecte pas à mon serveur, et renvoie le status 4 : Error.

Je travaille sur SFML 2.3, sous code::block. J'ai la bonne version de sfml car j'ai testé le premier programme qui m'affiche un cercle.

Mon pare feu ne bloque pas ce port, j'ai testé avec un client ruby qui marche parfaitement.

Voici mon code :
simple_server.rb :
require 'socket'               # Get sockets from stdlib

server = TCPServer.open(800)
loop {
        Thread.start(server.accept) do |client|
                puts "new client !"
                receive = client.recv 1000, 0
                puts receive
                client.send "Tu pues du cul !", 0
                client.close
        end
}

main.cpp
#include <iostream>
#include <string>
#include <SFML/Network.hpp>
#include <SFML/System.hpp>

int main()
{
    sf::TcpSocket socket;
    sf::Socket::Status status = socket.connect("localhost",800,sf::seconds(10));
    if(status == sf::Socket::Done)
    {
        char data[1000] = "Hello wesh !";
        status = socket.send(data,1000);
        if(status == sf::Socket::Done)
        {
            size_t received;
            status = socket.receive(data,1000,received);
            if(status == sf::Socket::Done)
            {
                std::string str(data);
                std::cout << "received : " << str << std::endl;
                socket.disconnect();
            }
            else
            {
                socket.disconnect();
                std::cout << "not received, error : " << status << std::endl;
                return -3;
            }
        }
        else
        {
            socket.disconnect();
            std::cout << "not send, error : " << status << std::endl;
            return -2;
        }
    }
    else
    {
        std::cout << "not connect, error : " << status << std::endl;
        return -1;
    }
    return 0;
}
 
Le client attend les 10 secondes de timeout et me renvoie "not connect, error : 4" en retournant -1.

J'ai testé sous "localhost", "127.0.0.1", ou même mon adresse locale "192.168.0.11", mais rien à faire, toujours le même résultat.

Je ne sais pas du tout d'où vient le problème, quelqu'un a une idée?

Je vous remercie d'avance pour votre réponse !
Titre: Re : TcpSocket ne se connecte pas à mon serveur ruby
Posté par: Laurent le Mai 09, 2015, 06:58:56 pm
Est-ce que l'exemple "socket" du SDK SFML fonctionne ?
Titre: Re : TcpSocket ne se connecte pas à mon serveur ruby
Posté par: Otruch le Mai 09, 2015, 07:24:00 pm
Bonjour,

l'exemple de la classe TCP Socket marche parfaitement avec l'exemple du serveur tcp en C++, merci de ta réponse !
Titre: [Résolu]Re : TcpSocket ne se connecte pas à mon serveur ruby
Posté par: Otruch le Mai 09, 2015, 07:52:16 pm
J'ai changé mon server.
au lieu de TCPServer.open(800) j'ai mis TCPServer.open("127.0.0.1",800) et ça marche. Je suppose que l'host par défaut doit être un truc du genre "0.0.0.0"... désolé pour votre perte de temps !