Salut
La fonction server_socket essaie de créer une socket d’écoute sur le port associé au service
transmis en paramètre. La socket écoutera sur toutes les interfaces réseaux de la machine. Elle
pourra utiliser le protocole IPv4 ou IPv6 en fonction des piles de protocoles présentes sur la
machine. En cas d’échec (que ce soit lors de la manipulation des adresses ou de la création de
la socket d’écoute) la fonction retournera -1.
https://pastebin.com/zg4C8NAS
Dans cette fonction, je ne comprends pas la boucle for.
C'est quelque chose qu'on retrouve souvent (toujours ?) avec la manipulation de getaddrinfo
.
On le retrouve également dans le manuel : https://pastebin.com/m6LExk1Y
Mais je n'arrive pas à me faire une explication claire dans ma tête. Quelles sont exactement toutes ces adresses retournées ? Pourquoi ça marche ou ça marche pas ? Pourquoi on a besoin d'une boucle ? Pourquoi même il y a plusieurs choses ?
C'est vraiment flou tout ça
Si vous pouviez m'expliquer un peu plus simplement et surtout en français....
Hello,
tu m'as fait ressortir mon cours de réseau lol,
j'ai relu le manuel et j'ai trouvé ça :
The getaddrinfo() function allocates and initializes a linked list of
addrinfo structures, one for each network address that matches node
and service, subject to any restrictions imposed by hints, and
returns a pointer to the start of the list in res. The items in the
linked list are linked by the ai_next field.
There are several reasons why the linked list may have more than one
addrinfo structure, including: the network host is multihomed, acces‐
sible over multiple protocols (e.g., both AF_INET and AF_INET6); or
the same service is available from multiple socket types (one
SOCK_STREAM address and another SOCK_DGRAM address, for example).
Normally, the application should try using the addresses in the order
in which they are returned. The sorting function used within getad‐
drinfo() is defined in RFC 3484; the order can be tweaked for a par‐
ticular system by editing /etc/gai.conf (available since glibc 2.5).
donc si je comprend bien, la structure addrinfo est une liste chaînée qui va contenir plusieurs réponses fournis par la fonction getaddrinfo, il peut y avoir plusieurs réponses en fonction de la configuration de ton réseau. Par exemple si ton réseau est "multihomed" alors il est connecté à plusieurs fournisseur d'accès à internet, cela permet d'augmenter la fiabilité de ta connexion internet. Du coup dans ces conditions on peut imaginer que si une connexion à internet foire à cause d'un problème avec un de tes FAI, le fait d'avoir plusieurs réponses fournie par getaddrinfo te permet de retenter la connexion avec un autre, puis un autre jusqu'à ce que ça marche (ou pas)