所以我开始使用套接字编程,并且我一直看到这AF_INET
。但是,我从来没有见过其他用途。我的讲师不是那么有帮助,只是说“你只需要它”。所以我的问题:什么是AF_INET,为什么我需要它?
AF_INET
的目的是什么?- 是否有其他的东西用来代替它?
- 如果不是,那为什么呢?对于未来可能的变化?
- 如果是这样,为什么?
所以我开始使用套接字编程,并且我一直看到这AF_INET
。但是,我从来没有见过其他用途。我的讲师不是那么有帮助,只是说“你只需要它”。所以我的问题:什么是AF_INET,为什么我需要它?
AF_INET
的目的是什么?AF_INET
是一个地址族,用于指定您的套接字可以与之通信的地址类型(在本例中为Internet协议v4地址)。当你创建一个套接字时,你必须指定它的地址系列,然后你只能在套接字中使用那种类型的地址。例如,Linux内核支持29个其他地址系列,如UNIX(AF_UNIX
)套接字和IPX(AF_IPX
),以及与IRDA和蓝牙(AF_IRDA
和AF_BLUETOOTH
)的通信,但是如果使用这样的低水平)。
大多数情况下,坚持使用AF_INET
来通过网络进行套接字编程是最安全的选择。互联网协议v6地址也有AF_INET6
。
希望这有助于,
AF_INET的主要目的是为了允许其它可能的网络协议或地址族(AF为地址族; PF_INET是对于(IPv4)的因特网协议家族)。例如,可能还有几个Netware SPX/IPX网络仍在使用;还有其他网络系统,如DECNet,StarLAN和SNA,更不用说不恰当的ISO OSI(开放系统互连)了,它们不一定使用现在无处不在的IP地址来识别网络连接中的对等主机。
对于IPv6地址系列,AF_INET(回想起来,应该命名为AF_INET4)的无处不在的替代方案是AF_INET6。 IPv4使用32位地址; IPv6使用128位地址。
您可能会看到其他一些值 - 但它们并不常见。它是在那里允许替代品和未来的方向。套接字接口确实非常普遍 - 这是其他网络接口枯萎的地方之一。
生活已经(大部分)变得更简单 - 不胜感激。
插座由它们的域,类型和传输协议表征。常见的域名是:
AF_UNIX:地址格式为UNIX路径
AF_INET:地址格式为主机和端口号
(有可用于实际上许多其他选项这里为特殊目的)。通常我们使用AF_INET套接字编程
你需要一个像AF_UNIX AF_INET或处理参数,你会使用来实现IPC套接字通信指定插座的哪种类型。 AF代表地址系列。
如BSD标准插座(在Python插座模块通过)地址被表示为如下:
单个串用于AF_UNIX/AF_LOCAL地址族。该选项用于不需要IP地址的本地机器上的IPC。
一对(主机,端口)用于AF_INET地址族,其中host是一个字符串,代表Internet域名表示中的主机名,如'daring.cwi.nl'或IPv4地址,如'100.50.200.5 ',而端口是一个整数。用于通过Internet进行进程之间的通信。
AF_UNIX,AF_INET6,AF_NETLINK,AF_TIPC,AF_CAN,AF_BLUETOOTH,AF_PACKET,AF_RDS是其可用于代替AF_INET其他选项。
这个thread about the differences between AF_INET and PF_INET也可能有用。
它定义了协议地址family.this确定创建的套接字类型。 掌上电脑支持AF_INET。
感谢您的答复 - 我推断出你的答案,我的第一个问题是,它的目的是确定使用什么网络协议?但是,您能否更具体地谈谈其他问题? – Smashery 2009-10-20 11:43:53
关于AF_INET6的好处;其他地址系列在某些操作系统上受支持。 – MarkR 2009-10-20 12:14:04