什么是getsockopt中的参数级别?

VIN*_*TIC 5 unix sockets setsockopt

我得到了以下链接:getsockopt() 中的 SOL_SOCKET

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

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

我正在使用 UNIX。

jde*_*esa 4

“套接字层”是指操作系统的套接字抽象。这些选项可以独立于您正在处理的套接字类型进行设置。在实践中,您可能只对 TCP/IP 套接字感兴趣,但还有 UDP/IP 套接字、Unix 域套接字等。相关选项SOL_SOCKET可应用于其中任何一个。另一个问题的答案中提供的列表中有一些;在套接字的手册页中,“套接字选项”部分下还有更多内容。

SOL_SOCKET是与该级别关联的“协议号”的常量。对于其他协议或级别,可以使用getprotoent从名称中获取协议号,或者查看该协议的手册 - 例如,IP 的手册页中描述了 IP ( IPPROTO_IP)、TCP ( IPPROTO_TCP) 和 UDP ( IPPROTO_UDP),而Unix 套接字的手册页说,由于历史原因,它的协议选项也必须使用进行设置SOL_SOCKET。此外,您可以在 中找到您的系统支持的协议列表/etc/protocols。当然,每个协议支持的选项都在它们的手册中:IPTCPUDPUnix 套接字......