Forum Programmation.c bind sur 2 interfaces ethernet

Posté par  .
Étiquettes :
0
16
sept.
2004
sur la meme machine Linux Fedora en noyau 2.6.3, j'ai 2 sockets UDP qui ecoutent sur 2 cartes reseau differentes, mais sur le meme port 520. pour des raisons que je ne vais pas expliquer en detail, il faut obligatoirement que je puisse differencier les flux des 2 sockets, car j'ai 2 threads dans mon process, chaque thread ayant un boulot particulier a faire sur une interface dediee.
ce que je fais:
- je cree 2 sockets UDP
- je bind chaque socket sur l'adresse IP de l'interface ethernet associee.
- je fais des select, et des recvfrom.
- je recois un premier paquet sur une des 2 interfaces.
- ensuite, plus rien, meme en forcant le recvfrom sans select.

pourtant, je vois les paquets UDP qui passent au sniffer.
j'ai egalement fait un setsockopt SO_REUSEADDR sur chaque socket.

tiens, parcontre, si je bind chaque socket sur INADDR_ANY, et qu'ensuite je fais un setsockopt (socket (7)) sur SO_BINDTODEVICE, la ca marche...

quelqu'un a-t-il une explication sur le fait que ca ne marche pas ?

ah, j'oubliais, je me suis egalement mis dans un meme groupe multicast (224.0.0.9) pour chacune de ces sockets

merci d'avance.

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.