IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Boost C++ Discussion :

[boost::asio] Problème de connect


Sujet :

Boost C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Février 2009
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2009
    Messages : 37
    Par défaut [boost::asio] Problème de connect
    Bonjour à tous,

    Je rencontre un problème sur une connection entre un client et serveur en utilisant boost::asio. En synthèse mon client se connect lorsque je l'écrit à la mode "C" et n'y arrive pas lorsque je réalise les mêmes étapes dans un objet.

    Voici le code qui se connect avec mon serveur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
     
    #define WIN32_LEAN_AND_MEAN
    #define _WIN32_WINNT 0x0501
     
    #include <boost/asio.hpp>
     
    #define _TCPSRV 10001
    #define _BUFFER_SIZE 1024
     
    using namespace std;
     
    int main ()
    {	
     		boost::asio::io_service myIO;
     
    		boost::asio::ip::tcp::endpoint proteusServerTCP(boost::asio::ip::address::from_string("127.0.0.1"), _TCPSRV);
     
     	   	boost::asio::ip::tcp::socket clientSocket(myIO);
     
    		clientSocket.connect(proteusServerTCP);
     
    		cout << "Connect OK\n";
     
                   ...
    }
    Voici la version objet, qui n'arrive pas à se connecter. D'abord le .h
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
     
    #ifndef DEF_NETWORK_CLIENT
    #define DEF_NETWORK_CLIENT
     
     
    #define WIN32_LEAN_AND_MEAN
    #define _WIN32_WINNT 0x0501
    #define _TCPSRV 10001
     
    #include <boost/asio.hpp>
     
    class network_client
    {
    	public:
    		network_client();
    		~network_client();
     
    	private:
    		boost::asio::io_service _myIO;
    		boost::asio::ip::tcp::socket* _TCPSock;
     
                    void connect();
     
    ...
    }

    Puis le code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     
    // includes , defines, constructeur etc
     
    void network_client::connect()
    {
     
    	boost::asio::ip::tcp::endpoint ServerTCP(boost::asio::ip::address::from_string("172.0.0.1"), _TCPSRV); 
    	_TCPSock = new boost::asio::ip::tcp::socket(_myIO);
     
    	try 
    	{
    		_TCPSock->connect(ServerTCP);
    	}
    	catch (std::exception &myException)
    	{
    // ne marche pas
            }
     
    ...
    }
    Dans les deux cas j'ai testé en compilant le code dans le même projet (VS 2008) et sous le même nom de programme. Le premier code passe, le second tombe en timeout alors que le serveur en face reste le même (je ne l'ai pas arreté entre les différents tests). J'ai le même comportement si j'intègre directement dans la fonction membre l'objet io_service et la socket.

    Je ne vois pas (à priori) de différences entre les deux écritures ni entre les opérations... je sèche.

    Est-ce que quelqu'un aurait une idée ?

    Merci d'avance.

  2. #2
    Membre Expert
    Avatar de poukill
    Profil pro
    Inscrit en
    Février 2006
    Messages
    2 155
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 2 155
    Par défaut
    C'est une faute de frappe l'adresse IP ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    boost::asio::ip::tcp::endpoint ServerTCP(boost::asio::ip::address::from_string("172.0.0.1"), _TCPSRV);
    Parce que c'est 127.0.0.1 le HOME ! Et pas 172.0.0.1

  3. #3
    Membre averti
    Homme Profil pro
    Inscrit en
    Février 2009
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2009
    Messages : 37
    Par défaut
    Il y a des jours où j'ai honte....

    Il y a de grandes chances que ce soit cela, comme quoi à regarder de trop près on devient aveugle. Fermeture du sujet...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Boost Asio problème érratique
    Par barj0 dans le forum Boost
    Réponses: 1
    Dernier message: 18/07/2013, 18h33
  2. Réponses: 1
    Dernier message: 24/07/2012, 12h03
  3. [Interbase] Problème de connections
    Par yolepro dans le forum InterBase
    Réponses: 3
    Dernier message: 24/02/2004, 15h31
  4. Problème de connection
    Par Trahwn dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 24/09/2003, 13h58
  5. problème de connection mysql par tcp/ip
    Par leroyphil dans le forum Administration
    Réponses: 5
    Dernier message: 04/09/2003, 18h27

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo