什么是AF_INET,为什么我需要它?

所以我开始使用套接字编程,并且继续看到这个AF_INET 。 然而,我从来没有看到任何其他用途的地方。 我的讲师不是很有帮助,只是说“你只需要它”。 所以我的问题:

  • AF_INET的目的是什么?
  • 还有别的东西用来代替它吗?
    • 如果不是,那为什么呢? 对未来可能的变化?
    • 如果是这样,为什么?

AF_INET是一个地址系列,用于指定套接字可以与之通信的地址types(在本例中是Internet协议v4地址)。 当你创build一个套接字时,你必须指定它的地址族,然后你只能使用这个types的套接字。 例如,Linux内核支持29个其他地址系列,例如UNIX( AF_UNIX )套接字和IPX( AF_IPX ),还支持与IRDA和蓝牙( AF_IRDAAF_BLUETOOTH ,但是如果使用这样的低水平)。

大多数情况下,坚持使用AF_INET进行套接字编程是最安全的select。 Internet协议v6地址也有AF_INET6

希望这可以帮助,

AF_INET的主要目的是允许其他可能的networking协议或地址族(AF用于地址族; PF_INET用于(IPv4)互联网协议族)。 例如,可能还有几个Netware SPX / IPXnetworking仍在使用; 还有其他的networking系统,如DECNet,StarLAN和SNA,更不用说不适用的ISO OSI(开放系统互连)了,这些networking系统不一定使用现在无处不在的IP地址来识别networking连接中的对等主机。

对于IPv6地址系列,AF_INET(现在回想起来应该被命名为AF_INET4)的无处不在的替代scheme是AF_INET6。 IPv4使用32位地址; IPv6使用128位地址。

你可能会看到一些其他的价值观 – 但它们是不寻常的。 这是为了让替代品和未来的方向。 套接字的接口确实非常普遍 – 这是其他networking接口枯萎的原因之一。

生活(主要)变得更简单 – 不胜感激。

您需要像AF_UNIX或AF_INET这样的参数来指定您将使用哪种types的套接字来实现IPC套接字通信。 AF代表地址系列。

如BSD标准中的Socket(在Python套接字模块中采用)地址表示如下:

  1. 一个string用于AF_UNIX / AF_LOCAL地址族。 此选项用于不需要IP地址的本地机器上的IPC。

  2. AF_INET地址族使用一对(主机,端口),其中host是一个string,表示Internet域名表示中的主机名,如“daring.cwi.nl”或IPv4地址(如“100.50.200.5”),port是一个整数。 用于通过互联网在进程之间进行通信。

AF_UNIX,AF_INET6,AF_NETLINK,AF_TIPC,AF_CAN,AF_BLUETOOTH,AF_PACKET,AF_RDS是可以用来代替AF_INET的其他选项。

这个线程关于AF_INET和PF_INET之间的区别可能也是有用的。

套接字的特点是它们的域,types和传输协议。 常见的域名是:

  1. AF_UNIX:地址格式是UNIXpath名

  2. AF_INET:地址格式是主机和端口号

(实际上有很多其他的选项可以用于专门的目的)。通常我们使用AF_INET进行套接字编程

参考: http : //www.cs.uic.edu/~troy/fall99/eecs471/sockets.html

它定义了协议地址族。这决定了所创build的套接字的types。 口袋pc支持AF_INET。

在下面的页面内容是相当体面http://etutorials.org/Programming/Pocket+pc+network+programming/Chapter+1.+Winsock/Streaming+TCP+Sockets/