On Mon, Apr 04, 2005 at 01:59:38PM +0200, Fran�ois Boisson wrote:
> Le Mon, 4 Apr 2005 12:04:01 +0200
> Jean-Michel OLTRA <[EMAIL PROTECTED]> a �crit:
>
> >
> > bonjour,
> >
> >
> > Le lundi 04 avril 2005, Fran�ois Boisson a �crit...
> >
> >
> > > Un truc idiot en C, je cr�e une socket UDP qui envoit des paquets �
> > > une machine donn�e. Je cherche l'adresse IP sous laquelle
> > > j'apparaitrais � la cible (en clair l'adresse IP d'o� proviendra le
> > > paquet que la machine recevra si on suppose l'absence de NAT bien
> > > s�r). Un getsockname me renvoit 0.0.0.0 (IPPADR_ANY en fait).
> > > Y-a-t-il une m�thode simple, �a me parait tout b�te mais je n'ai
> > > rien trouv� dans mon pav� de r�f�rence ("Programmation syst�me en C
> > > sous linux" par Christophe Blaess).
> >
> > getpeername() ??
> >
>
> Non getpeername donne des renseignements sur la machine � l'autre bout
> (B dans ci dessous alors que je veux A): Je vais �tre plus clair:
>
> 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�...
�a ne marche pas si tu fais un connect(2) sur B avant un
getsockname? Je crois qu'il n'y m�me pas besoin faire un
send/sendto/sendmsg avant.
�a devrait si je comprends le code du noyau qui passe par
net/ipv4/af_inet.c:inet_dgram_connect. Tu peux d�sassocier
ton socket si tu veux en faisant un connect(2) � un socket
de famille AF_UNSPEC.
Gabriel
--
Pensez � lire la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench
Pensez � rajouter le mot ``spam'' dans vos champs "From" et "Reply-To:"
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]