关于Socket编程中的地址组和协议组

本文探讨了在Socket编程中,Windows和Linux下socket函数的第一个参数`af`和`domain`的区别,以及AF_和PF_常量的含义。尽管在实践中AF_和PF_的值相同,但它们在概念上代表不同的东西:地址族和协议族。文章建议在Windows下使用AF_,Linux下使用PF_以保持一致性。
摘要由CSDN通过智能技术生成
原文请参见 http://casit.blogbus.com/logs/7748763.html

写socket程序,恐怕都是从socket函数开始的。但是对这个函数却很少深入探究。在此我给出一些我的分析结果。

先看原型:  SOCKET socket(int af,int type,int protocol);  //Windows
 int socket(int domain, int type, int protocol); //Linux

除 了返回值不同外,第一个参数还是不同的。我们注意到,Windows下第一个参数是af(address family),而Linux下则是domain(protocol family)。而看参数的值,也有AF_*和PF_*之别。那么这两者之间究竟有没有区别呢?

地址族和协议族究竟是否为一码事呢?很显 然,他们应该含义是不同的。比如,Internet协议族(v4)里分TCP、UDP等协议,但是他们统属Internet协议族(PF_INET)。而 对应的,他们的地址也是IPv4地址。所以其地址族为(AF_INET)。但是无论看Win下还是Linux下的定义就会发现,所有的都是 (#define PF_INET AF_INET),也就是说,地址族和协议族的值永远是相等的。这似乎显得多此一举了,既然值都是一样的,为什么要定义两套呢?

我们回想一 下socket函数所做的工作:创建一个插口!仅仅是创建一个插口。在这个时候,这个插口应该是还

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值