Bonjour,
Je dispose d'un ordinateur qui a deux cartes réseaux possédant chacune leur IP spécifique. Je relève ces IP par un ipconfig.
J'ai un logiciel (en c++) qui émet des trames UDP via la couche classique Winsock. Je ne connais pas grand chose en réseau, mais avec un espionnage réseau (le logiciel Wiresharck) j'ai remarqué que l'emission se faisait sur la mauvaise carte, c'est a dire qu'une carte est relié au reseau d'entreprise, et la seconde à une reseau de test local. Donc, lorsque je fais des sendto, mes paquets partent DEPUIS la mauvaise carte.
Après des recherches sur le net, il s'avère que c'est dans le bind que l'on doit préciser l'adresse physique de la carte utilisée pour emettre les infos.
Est-ce que je me trompe ?
Donc, je fais ce morceau de code:
m_h_socket est ma socket ouverte au préalable, je fais les sendto dessus.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 struct sockaddr_in loc_st_address; loc_st_address.sin_family = AF_INET; loc_st_address.sin_port = htons(par_us_port); loc_st_address.sin_addr.s_addr = ::inet_addr( "128.10.5.6" ); bind(m_h_socket, (SOCKADDR*)&loc_st_address, sizeof(loc_st_address))
La fonction bind retourne OK.
Mais, malgré ceci, lorsque j'espionne le reseau et que je lance mon logiciel qui émet cycliquement des trames UDP, je capte ces trames toujours sur la premiere carte, et meme si j'ai mis l'adresse IP de la deuxieme trame dans le bind ?
Est-ce normal ?
Faut-il procéder autrement ?
Merci pour l'aide
Partager