Bonjour à tous,
je développe une application orientée P2P, et j'essaye de créer des noeuds à l'aide de boost ASIO. Je travaille sur une machine virtuelle VMWare (CentOS 5) sur laquelle j'ai déclaré 3 interfaces réseau comme suit:
eth0: 192.168.0.10
eth1: 192.168.0.11
eth2: 192.168.0.12
Je lance ensuite 3 fois mon application, chacune écoutant sur une interface différente (donné par argument)
Jusque là, tout fonctionne bien, quand je fais un netstat après le lancement de mes 3 applis, j'ai bien mes 3 interfaces en LISTEN sur le port souhaité:
Je lance ensuite une recherche à partir de la première instance du programme (celui qui écoute en .0.10), pour qu'il essaye de se connecter au 2 autres via leur port d'écoute. La connexion (asynchrone) réussit, mais quand je regarde le socket de la connexion, j'obtiens ceci:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 tcp 0 0 192.168.0.12:7171 *:* LISTEN tcp 0 0 192.168.0.11:7171 *:* LISTEN tcp 0 0 192.168.0.10:7171 *:* LISTEN
Je n'ai donc pas de lien 10/11 et 10/12, mais à la place 11/11 et 12/12...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 tcp 0 0 192.168.0.11:39890 192.168.0.11:7171 ESTABLISHED tcp 0 0 192.168.0.11:7171 192.168.0.11:39890 ESTABLISHED tcp 0 0 192.168.0.12:7171 192.168.0.12:47724 ESTABLISHED tcp 0 0 192.168.0.12:47724 192.168.0.12:7171 ESTABLISHED
Voici le code que j'utilise pour la connection:
D'ou peut provenir le problème,
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 void nvsnode::connect(tcp::endpoint& endpoint) { connec* new_node= new connec(m_io_serv); new_node->getSocket().async_connect(endpoint, boost::bind(&nvsnode::handle_connect, this, new_node, boost::asio::placeholders::error) ); }
de la configuration de mes interfaces via VMWare?
de mon code?
d'une option pour spécifier l'interface de connection dans asio?
un paramètrage spécial de CentOS?
Merci de votre attention.
Partager