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

Auteur Sujet: [Résolu]TcpSocket ne se connecte pas à mon serveur ruby  (Lu 1671 fois)

0 Membres et 1 Invité sur ce sujet

Otruch

  • Newbie
  • *
  • Messages: 5
    • Voir le profil
[Résolu]TcpSocket ne se connecte pas à mon serveur ruby
« 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 !
« Modifié: Mai 09, 2015, 07:53:03 pm par Otruch »

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32504
    • Voir le profil
    • SFML's website
    • E-mail
Re : TcpSocket ne se connecte pas à mon serveur ruby
« Réponse #1 le: Mai 09, 2015, 06:58:56 pm »
Est-ce que l'exemple "socket" du SDK SFML fonctionne ?
Laurent Gomila - SFML developer

Otruch

  • Newbie
  • *
  • Messages: 5
    • Voir le profil
Re : TcpSocket ne se connecte pas à mon serveur ruby
« Réponse #2 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 !

Otruch

  • Newbie
  • *
  • Messages: 5
    • Voir le profil
[Résolu]Re : TcpSocket ne se connecte pas à mon serveur ruby
« Réponse #3 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 !

 

anything