我开始使用套接字编程,我一直看到这个AF_INET
。
然而,我从来没有见过任何其他用途。我的讲师没那么有用,只是说“你只需要它”。
所以我的问题:
AF_INET
的目的是什么?答案 0 :(得分:220)
AF_INET
是一个地址系列,用于指定套接字可以与之通信的地址类型(在本例中为Internet协议v4地址)。创建套接字时,必须指定其地址族,然后只能使用该类型的地址与套接字。例如,Linux内核支持其他29个地址系列,例如UNIX(AF_UNIX
)套接字和IPX(AF_IPX
),以及与IRDA和蓝牙(AF_IRDA
和{{1}的通信但是,你会怀疑你会在如此低的水平上使用它们。)
在大多数情况下,坚持使用AF_BLUETOOTH
进行网络套接字编程是最安全的选择。 Internet协议v6地址也有AF_INET
。
希望这有帮助,
答案 1 :(得分:42)
AF_INET的主要目的是允许其他可能的网络协议或地址系列(AF用于地址族; PF_INET用于(IPv4)互联网协议族)。例如,可能还有一些Netware SPX / IPX网络;还有其他网络系统,如DECNet,StarLAN和SNA,更不用说恶意的ISO OSI(开放系统互连),这些并不一定使用现在无处不在的IP地址来识别网络连接中的对等主机。
AF_INET的无处不在的替代品(回想起来应该被命名为AF_INET4)是AF_INET6,用于IPv6地址族。 IPv4使用32位地址; IPv6使用128位地址。
您可能会看到一些其他值 - 但它们并不常见。它允许替代方案和未来方向。套接字接口实际上非常普遍 - 这是其他网络接口枯萎的原因之一。
生活(大部分)变得更简单 - 不胜感激。
答案 2 :(得分:15)
您需要AF_UNIX或AF_INET之类的参数来指定您将使用哪种类型的套接字寻址来实现IPC套接字通信。 AF代表地址族。
与BSD标准一样,Socket(在Python套接字模块中采用)地址表示如下:
单个字符串用于AF_UNIX / AF_LOCAL地址系列。此选项用于不需要IP地址的本地计算机上的IPC。
一对(主机,端口)用于AF_INET地址系列,其中host是一个字符串,表示Internet域符号中的主机名,如'daring.cwi.nl'或IPv4地址,如'100.50。 200.5',port是一个整数。用于通过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也可能有用。
答案 3 :(得分:12)
套接字的特征在于它们的域,类型和传输协议。常见域名是:
AF_UNIX:地址格式为UNIX路径名
AF_INET:地址格式为主机和端口号
(实际上有许多其他选项可用于专门用途)。通常我们使用AF_INET进行套接字编程
答案 4 :(得分:2)
它定义了协议地址族。这决定了创建的套接字的类型。 掌上电脑支持AF_INET。
以下页面中的内容相当不错 http://etutorials.org/Programming/Pocket+pc+network+programming/Chapter+1.+Winsock/Streaming+TCP+Sockets/
答案 5 :(得分:0)
“什么是 AF_INET,我为什么需要它?”
表示使用IPv4协议。与 IPv6 或其他一些协议相反。