web-dev-qa-db-fra.com

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

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

Pourtant, je n'ai jamais rien vu d'autre utilisé à sa place. Mes conférenciers ne sont pas très utiles et me 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 des changements possibles dans le futur?
    • Si oui, quoi et pourquoi?
171
Smashery

AF_INET est une famille d'adresses utilisée pour désigner le type d'adresses avec lesquelles 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. Vous ne pouvez alors utiliser que des adresses de ce type avec le socket. Le noyau 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 douteux que vous les utilisiez à un niveau aussi bas).

Dans la plupart des cas, l'option la plus sûre consiste à utiliser 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,

224
George Shore

AF_INET avait pour objectif principal d'autoriser d'autres protocoles réseau ou familles d'adresses possibles (AF correspond à la famille d'adresses; PF_INET à 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 tels que DECNet, StarLAN et SNA, sans parler de l'ISO/OSI (Open Systems Interconnection), qui était mal engendré, et ceux-ci n'utilisaient pas nécessairement l'adresse IP désormais omniprésente pour identifier l'hôte homologue dans les connexions réseau.

L'alternative omniprésente à 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 verrez peut-être d'autres valeurs, mais elles sont inhabituelles. Il est là pour permettre des alternatives et des orientations futures. L’interface de sockets est en réalité très générale - c’est l’une des raisons pour lesquelles elle a prospéré là où d’autres interfaces réseau se sont évaporées.

La vie est (généralement) devenue plus simple - soyez reconnaissant.

42
Jonathan Leffler

Vous avez besoin d'arguments tels que AF_UNIX ou AF_INET pour spécifier le type d'adressage de socket que vous utiliseriez pour mettre en œuvre la communication IPC. AF signifie Address Family.

Comme dans le standard BSD Socket (adopté dans Python module de socket), les adresses 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 ordinateurs locaux pour lesquels aucune adresse IP n'est requise.

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

AF_UNIX, AF_INET6, AF_NETLINK, AF_TIPC, AF_CAN, AF_BLUETOOTH, AF_PACKET, AF_RDS sont une autre option qui pourrait être utilisée à la place de AF_INET .

Ceci les discussions sur les différences entre AF_INET et PF_INET pourraient également être utiles.

15
Avi Mehenwal

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

  1. AF_UNIX: le format d'adresse est UNIX chemin

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

(de nombreuses autres options peuvent être utilisées ici à des fins spécialisées). Nous utilisons habituellement AF_INET pour la programmation de socket.

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

12
Asish P Mathew

il définit la famille d’adresses de protocoles.Il détermine le type de socket créé. support de poche AF_INET.

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

2
chandan