getsockopt中的参数级别是什么?

时间:2014-10-09 15:03:22

标签: sockets unix setsockopt

我收到了以下链接:SOL_SOCKET in getsockopt()

但这对我来说真的很困惑。一个人回答说SOL_SOCKET表示套接字层。什么是套接字层?该参数还有其他可用选项吗?

如果我们传递SOL_SOCKET参数以及SOL代表什么,会发生什么?

我正在使用UNIX。

1 个答案:

答案 0 :(得分:2)

"套接字层"指操作系统的套接字抽象。这些选项可以独立于您正在处理的套接字类型进行设置。实际上,您可能只对TCP / IP套接字感兴趣,但也有UDP / IP套接字,Unix域套接字等。与SOL_SOCKET相关的选项可以应用于其中任何一个。 The list provided in the answer of the other question有一些;在manual page of sockets中,还有更多,在"套接字选项"部分。

SOL_SOCKET是"协议编号的常量"与该级别相关联。对于其他协议或级别,您可以使用getprotoent从其名称中获取协议号,或者查看协议的手册 - 例如,在manual page of IP中描述了协议号的常量。 IP(IPPROTO_IP),TCP(IPPROTO_TCP)和UDP(IPPROTO_UDP),而manual page of Unix sockets表示由于历史原因,其协议选项必须使用{{ 1}}。此外,您可以在SOL_SOCKET中找到系统支持的协议列表。当然,每个协议支持的选项都在他们的手册中:IPTCPUDPUnix sockets ......