欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

【转】PF_INET 和 AF_INET 的区别

发布时间:2023/12/10 编程问答 65 豆豆
生活随笔 收集整理的这篇文章主要介绍了 【转】PF_INET 和 AF_INET 的区别 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

转自:PF_INET 和 AF_INET 的区别 - 52php - 博客园

在写网络程序的时候,建立TCP socket:

1

sock = socket(PF_INET, SOCK_STREAM, 0);

然后再绑定本地地址或连接远程地址时需要初始化sockaddr_in结构,其中指定address family时一般设置问AF_INET,即使用IP。

相关的头文件定义:

AF = Address Family

PF = Protocol Family

AF_INET = PF_INET

所以在Windows中,AF_INET与PF_INET完全一样,而在Unix/Linux系统中,在不同的版本中这两者有微小差别。对于BSD,是AF,对于POSIX是PF。

理论上,建立socket时是指定协议,应该用PF_XXXX,设置地址时应该用AF_XXXX。当然AF_INET和PF_INET的值是相同的,混用也不会有太大的问题。

在函数socketpair与socket的domain参数中有

AF_UNIX, AF_LOCAL, AF_INET, PF_UNIX, PF_LOCAL, PF_INET

这几个参数有  AF_UNIX = AF_LOCAL, PF_UNIX = PF_LOCAL, AF_LOCAL = PF_LOCAL, AF_INET = PF_INET

建议:对于socketpair与socket的domain参数,使用PF_LOCAL系列,而在初始化套接口地址结构时,则使用AF_LOCAL。

例如:

1

2

sockfd = socket(PF_LOCAL, SOCK_STREAM, 0);

adr_unix.sin_family = AF_LOCAL;

总结

以上是生活随笔为你收集整理的【转】PF_INET 和 AF_INET 的区别的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。