我正在学习套接字编程。我正在研究的int socketpair(int domain, int type, int protocol, int sv[2])
示例将domain
参数从AF_LOCAL
更改为PF_LOCAL
,但未作任何解释。谷歌搜索“AF_LOCAL与PF_LOCAL”导致我进入论坛,用户辩论没有结论是否相同。实际上这些AF_*
和PF_*
值之间的关系是什么,如果它们相同,为什么两者都存在?
答案 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。而且,既然这就是理查德史蒂文斯在他的书中所做的那样,那就是我在这里所做的。