[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: [HS] Adresse IP



Mon, 4 Apr 2005 13:59:38 +0200, François Boisson a écrit :
>[...]
> Une socket sur A envoit des paquets vers B, comment le programme en A
> peut-il connaitre l'IP sous laquelle il envoit les paquets (l'IP de la
> machine A donc). Si il y a plusieurs cartes réseaux, le pbm n'est pas si
> simple, je pensais qu'un getsockname juste après un envoi de paquet
> renverrait les informations  mais non, ça ne permet de connaitre que le
> numéro de port utilisé...

Si tu ne spécifie pas l'IP de la socket, les paquets UDP sont envoyés sur
toutes les IP de la machine A (d'où le any). C'est ensuite au niveau IP
(le niveau sous UDP) que les paquets sont routés.

Je pense que ce que tu voudrais, c'est que le noyau t'informe de
l'interface/IP qui a servi à envoyer ce paquet.

Mais ce paquet est déjà parti !

Il faudrait :
1/ soit que la socket soit modifiée (plus en any)
2/ soit que les infos de routage remontent dans le paquet.

Pour le 1/, tu peux envoyer d'autres paquets par cette socket mais vers
n'importe quelle autre adresse (d'où le any). La socket n'est pas modifiée
(elle reste en any).

Pour le 2/, ben je ne connais pas par cœur toutes les fonctions C sur les
paquets UDP mais il ne me semble pas que cela soit possible (en tout cas
les infos ne sont pas dans la socket).

Une solution, c'est que le receveur de ton paquet UDP te renvoie ton
adresse dans sa réponse. Ou bien tu recherches le nom de la machine sur
laquelle tu travailles.

Mes 2 ¢,
-- 
Sylvain Sauvage



Reply to: