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

