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:
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 #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"; ... }
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:
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.
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 } ... }
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.
Partager