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.