[ASIO] Problème de socket
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é:
Code:
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 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:
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 |
Je n'ai donc pas de lien 10/11 et 10/12, mais à la place 11/11 et 12/12...
Voici le code que j'utilise pour la connection:
Code:
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)
);
} |
D'ou peut provenir le problème,
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.