在写网络程序的时候,建立TCP socket一般是这样的:
sock = socket(PF_INET, SOCK_STREAM, 0);
然后在绑定本地地址或连接远程地址时需要初始化sockaddr_in结构,其中指定address family时一般设置为AF_INET,即使用IP。
问题是AF_INET和PF_INET到底有什么区别,甚至很多参考书上都是混用。今天查了一下相关头文件的定义,找到了答案。
AF = Address Family
PF = Protocol Family
AF_INET = PF_INET
所以,理论上建立socket时是指定协议,应该用PF_xxxx,设置地址时应该用AF_xxxx。当然AF_INET和PF_INET的值是相同的,混用也不会有太大的问题。
引用出处:http://hi.baidu.com/luoqi03/blog/item/832e6d133f29b95bf819b8f3.html