2011-02-11 65 views
7

我刚开始用网络编程。在查看套接字函数时,有些使用PF_INET,而其他使用AF_INET。在wikipedia看来,它说这样的设计被用来使不同的协议族使用不同的地址系列。目前是否有任何支持多种地址类型的协议族?网络编程:Socket函数:地址族VS协议族

我也碰到这个错误来了,当我在寻找地址族Vs的协议族:

Address family not supported by protocol family 

这是否意味着有支持多个地址家庭协议?

我碰到这个statement

you shouldn't necessarily expect to be able to use NS addresses with ARPA Internet protocols 

什么是NS地址来的?

谢谢。

回答

3

socket的Windows文档说,地址族是第一个参数;我的Linux机器上的手册页说这应该是协议族。从平台不可知的角度来看,Linux版本似乎更加正确 - 理论上,套接字具有协议族,地址具有地址族,并且两者应该兼容。

但实际上,内置协议的PF_AF_宏具有相同的值(在Linux和Windows中)。我想大多数操作系统都是类似的故事,因为所有的通用协议系列都有一个地址系列。 (你会认为IP会有两个,但是没有,IPv4和IPv6有不同的协议族。)(这与C的相对较弱的键入)允许它们几乎可以互换使用。

请注意,无法保证所有操作系统或某些第三方驱动程序支持的协议都适用于此情况。在这些情况下,您应该查阅针对您的特定平台的文档。据我所知,至于什么是“NS地址”,它们是施乐公司的史前Network Systems protocol(一种类似于TCP/IP的协议族,但与现代PC不同且不兼容且未使用)的一部分。除非您使用古老的系统,否则您不会看到它们在使用中;为什么这个例子不在我身边。

相关问题