socket()域参数:AF_ *与PF_ *

时间:2017-05-17 01:22:28

标签: linux sockets

我正在学习套接字编程。我正在研究的int socketpair(int domain, int type, int protocol, int sv[2])示例将domain参数从AF_LOCAL更改为PF_LOCAL,但未作任何解释。谷歌搜索“AF_LOCAL与PF_LOCAL”导致我进入论坛,用户辩论没有结论是否相同。实际上这些AF_*PF_*值之间的关系是什么,如果它们相同,为什么两者都存在?

1 个答案:

答案 0 :(得分:1)

至少在linux(socket.h)中,它们被定义为相同的值。 (尽管从技术上讲,它们所代表的定义略有不同)

从接受的答案引用与AF_INET与PF_INET类似的问题。 What is the difference between AF_INET and PF_INET in socket programming?

  

在某些文档中,您会看到一个神秘的“PF_INET”。这是一种奇怪的以太野兽,在自然界很少见,但我不妨在这里澄清一下。很久以前,人们认为可能是地址族(“AF_INET”中的“AF”代表什么)可能支持其协议族所引用的几种协议(“PF_INET”中的“PF”代表什么) )。   那没发生。那好吧。所以正确的做法是在你的struct sockaddr_in和PF_INET中使用AF_INET来调用socket()。但实际上,您可以在任何地方使用AF_INET。而且,既然这就是理查德史蒂文斯在他的书中所做的那样,那就是我在这里所做的。