Что такое AF_INET и зачем мне это нужно?
Итак, я начинаю программировать сокеты, и я вижу это AF_INET
. Тем не менее, я никогда не видел, чтобы что-то еще использовалось на его месте. Мои преподаватели не так полезны и просто говорят: "Вам просто нужно". Итак, мои вопросы:
- Какова цель
AF_INET
?
- Используется ли что-нибудь еще вместо этого?
- Если нет, то почему? Возможные изменения в будущем?
- Если да, то что и почему?
Ответы
Ответ 1
AF_INET
- это семейство адресов, которое используется для обозначения типа адресов, с которыми может взаимодействовать ваш сокет (в данном случае, адресов интернет-протокола v4). Когда вы создаете сокет, вы должны указать его семейство адресов, а затем вы можете использовать только адреса этого типа с помощью сокета. Например, ядро Linux поддерживает 29 других семейств адресов, таких как UNIX (AF_UNIX
) и IPX (AF_IPX
), а также связь с IRDA и Bluetooth (AF_IRDA
и AF_BLUETOOTH
, но сомнительно, что вы 'использовать их на таком низком уровне).
По большей части, придерживаться AF_INET
для программирования сокетов по сети является наиболее безопасным вариантом. Существует также AF_INET6
для адресов интернет-протокола v6.
Надеюсь, что это поможет,
Ответ 2
Основная цель AF_INET состояла в том, чтобы разрешить другие возможные сетевые протоколы или семейства адресов (AF для семейства адресов; PF_INET - для семейства интернет-протоколов (IPv4)). Например, по-прежнему существует несколько сетей Netware SPX/IPX; существовали другие сетевые системы, такие как DECNet, StarLAN и SNA, не говоря уже о некорректном ISO OSI (Open Systems Interconnection), и они не обязательно использовали теперь повселокальный IP-адрес для идентификации однорангового узла в сетевых соединениях.
Вездесущей альтернативой AF_INET (которая в ретроспективе должна была быть названа AF_INET4) является AF_INET6 для семейства адресов IPv6. IPv4 использует 32-разрядные адреса; IPv6 использует 128-разрядные адреса.
Вы можете увидеть некоторые другие значения, но они необычны. Здесь можно предусмотреть альтернативы и будущие направления. Интерфейс сокетов на самом деле очень общий - это одна из причин, по которой он процветал там, где загромождали другие сетевые интерфейсы.
Жизнь (в основном) стала проще - будьте благодарны.
Ответ 3
Вам нужны такие аргументы, как AF_UNIX или AF_INET, чтобы указать тип адресации сокетов, который вы будете использовать для реализации связи сокета IPC. AF обозначает семейство адресов.
Как и в стандарте BSD Socket (принятом в модуле сокета Python), адреса представлены следующим образом:
-
Для семейства адресов AF_UNIX/AF_LOCAL используется одна строка. Эта опция используется для IPC на локальных машинах, где не требуется IP-адрес.
-
Пара (host, port) используется для семейства адресов AF_INET, где host - это строка, представляющая либо имя хоста в нотации домена Интернета, как "daring.cwi.nl", или адрес IPv4, такой как "100.50". 200.5 ', а порт - целое число. Используется для связи между процессами через Интернет.
AF_UNIX, AF_INET6, AF_NETLINK, AF_TIPC, AF_CAN, AF_BLUETOOTH, AF_PACKET, AF_RDS - это другая опция, которая может использоваться вместо AF_INET.
Этот поток о различиях между AF_INET и PF_INET также может быть полезен.
Ответ 4
Socket характеризуются своим доменным, типом и транспортным протоколом. Общие домены:
(на самом деле существует много других опций, которые могут использоваться здесь для специализированных целей). Обычно мы используем AF_INET для программирования сокетов
Ссылка: http://www.cs.uic.edu/~troy/fall99/eecs471/sockets.html
Ответ 5
он определяет семейство адресов протоколов. Это определяет тип созданного сокета.
поддержка карманного ПК AF_INET.
содержание на следующей странице довольно приличное
http://etutorials.org/Programming/Pocket+pc+network+programming/Chapter+1.+Winsock/Streaming+TCP+Sockets/