Qu’est-ce que AF_INET et pourquoi en ai-je besoin?

Je commence à programmer des sockets et je continue à voir cet AF_INET .

Pourtant, je n’ai jamais rien vu d’autre à sa place. Mes conférenciers ne sont pas très utiles et disent simplement “Vous en avez juste besoin”.

Donc mes questions:

  • Quel est le but de AF_INET ?
  • Est-ce que quelque chose d’autre a déjà été utilisé à la place?
    • Si non, pourquoi est-ce là? Pour d’éventuels changements dans le futur?
    • Si oui, quoi et pourquoi?

AF_INET est une famille d’adresses utilisée pour désigner le type d’adresses avec lequel votre socket peut communiquer (dans ce cas, les adresses Internet Protocol v4). Lorsque vous créez un socket, vous devez spécifier sa famille d’adresses et vous ne pouvez utiliser que des adresses de ce type avec le socket. Le kernel Linux, par exemple, prend en charge 29 autres familles d’adresses telles que les sockets UNIX ( AF_UNIX ) et IPX ( AF_IPX ), ainsi que les communications avec IRDA et Bluetooth ( AF_IRDA et AF_BLUETOOTH , mais il est peu probable que vous les AF_BLUETOOTH si bas). niveau).

Pour la plupart, le choix le plus sûr AF_INET à AF_INET pour la programmation de sockets sur un réseau. Il existe également AF_INET6 pour les adresses Internet Protocol v6.

J’espère que cela t’aides,

Le principal objective d’AF_INET était de permettre d’autres protocoles de réseau ou familles d’adresses possibles (AF pour la famille d’adresses; PF_INET pour la famille de protocoles Internet (IPv4)). Par exemple, il existe probablement encore quelques réseaux Netware SPX / IPX; Il y avait d’autres systèmes de réseau comme DECNet, StarLAN et SNA, sans parler de l’ISO OSI (Open Systems Interconnection), et ceux-ci n’utilisaient pas nécessairement l’adresse IP maintenant omniprésente pour identifier l’hôte homologue dans les connexions réseau.

L’alternative à AF_INET (qui, rétrospectivement, aurait dû s’appeler AF_INET4) est AF_INET6, pour la famille d’adresses IPv6. IPv4 utilise des adresses 32 bits; IPv6 utilise des adresses 128 bits.

Vous pouvez voir d’autres valeurs – mais elles sont inhabituelles. Il est là pour permettre des alternatives et des orientations futures. L’interface Sockets est en fait très générale – ce qui est l’une des raisons pour lesquelles elle a prospéré là où d’autres interfaces réseau ont disparu.

La vie est (surtout) plus simple – soyez reconnaissant.

Vous avez besoin d’arguments comme AF_UNIX ou AF_INET pour spécifier le type d’adressage de socket que vous utiliseriez pour implémenter la communication par socket IPC. AF signifie Address Family.

Comme dans le standard BSD, les adresses Socket (adoptées dans le module socket Python) sont représentées comme suit:

  1. Une seule chaîne est utilisée pour la famille d’adresses AF_UNIX / AF_LOCAL. Cette option est utilisée pour IPC sur les machines locales où aucune adresse IP n’est requirejse.

  2. Une paire (hôte, port) est utilisée pour la famille d’adresses AF_INET, où host est une chaîne représentant un nom d’hôte en notation de domaine Internet tel que “daring.cwi.nl” ou une adresse IPv4 telle que “100.50.200.5” et port est un nombre entier. Utilisé pour communiquer entre les processus sur Internet.

AF_UNIX, AF_INET6, AF_NETLINK, AF_TIPC, AF_CAN, AF_BLUETOOTH, AF_PACKET, AF_RDS sont d’autres options pouvant être utilisées à la place de AF_INET .

Cette discussion sur les différences entre AF_INET et PF_INET pourrait également être utile.

Les sockets sont caractérisés par leur domaine, leur type et leur protocole de transport. Les domaines communs sont:

  1. AF_UNIX: le format de l’adresse est le chemin UNIX

  2. AF_INET: le format de l’adresse est l’hôte et le numéro de port

(il y a en fait beaucoup d’autres options qui peuvent être utilisées ici à des fins spécialisées). nous utilisons généralement AF_INET pour la programmation des sockets

Référence: http://www.cs.uic.edu/~troy/fall99/eecs471/sockets.html

Il définit la famille d’adresses du protocole. Cela détermine le type de socket créé. support de poche pc AF_INET.

le contenu de la page suivante est tout à fait correct http://etutorials.org/Programming/Pocket+pc+network+programming/Chapter+1.+Winsock/Streaming+TCP+Sockets/