什么是AF_INET,为什么我需要它?
所以我开始使用套接字编程,并且继续看到这个AF_INET
。 然而,我从来没有看到任何其他用途的地方。 我的讲师不是很有帮助,只是说“你只需要它”。 所以我的问题:
-
AF_INET
的目的是什么? - 还有别的东西用来代替它吗?
- 如果不是,那为什么呢? 对未来可能的变化?
- 如果是这样,为什么?
AF_INET
是一个地址系列,用于指定套接字可以与之通信的地址types(在本例中是Internet协议v4地址)。 当你创build一个套接字时,你必须指定它的地址族,然后你只能使用这个types的套接字。 例如,Linux内核支持29个其他地址系列,例如UNIX( AF_UNIX
)套接字和IPX( AF_IPX
),还支持与IRDA和蓝牙( AF_IRDA
和AF_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套接字模块中采用)地址表示如下:
-
一个string用于AF_UNIX / AF_LOCAL地址族。 此选项用于不需要IP地址的本地机器上的IPC。
-
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和传输协议。 常见的域名是:
-
AF_UNIX:地址格式是UNIXpath名
-
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/