2 votes

Confusion dans l'appel bind en programmation socket

J'apprenais la programmation de socket sous unix en utilisant c/c++. Je suis confus avec une fonction appelée bind(params..). En fait, elle prend la structure d'adresse "sockaddr_in" et nous pouvons créer la structure de la manière suivante

sockaddr_in.*** = somthing..
sockaddr_in..s_addr   htonl(INADDR_ANY)

**Passing INADDR_ANY will alow to bind all local addresses**

Ma question est la suivante : pourquoi devons-nous utiliser "INADDR_ANY" ? A ma connaissance, chaque machine ne peut avoir qu'une seule adresse IP unique. De cette façon, il n'y a qu'une seule adresse associée à la machine. L'appel bind doit lier directement la socket à l'unique adresse disponible.

Veuillez expliquer quels sont les différents scénarios et pourquoi il en est ainsi.

1voto

iutinvg Points 101

Une machine possède généralement une adresse IP pour chaque interface réseau connectée, plus 127.0.0.1 pour localhost (loopback). Par exemple, un ordinateur portable peut être connecté à un réseau sans fil sous l'adresse 10.0.1.25 et à un réseau câblé sous l'adresse 10.0.2.4. Les serveurs ont souvent une interface avec un réseau interne ainsi qu'avec un réseau public.

0voto

JSBձոգչ Points 25069

Il est possible qu'une machine ait plus d'une adresse IP, soit parce qu'elle possède plusieurs cartes réseau, soit par le biais d'un logiciel. INADDR_ANY vous permet de lier une socket à toutes les adresses IP de la machine.

0voto

Pavel Radzivilovsky Points 11613

C'est faux. La plupart des machines sont multi-hommes, ce qui signifie qu'elles ont plus d'une adresse IP.

Par exemple, l'adresse réseau et 127.0.0.1.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X