我得到以下链接:SOL_SOCKET in getsockopt()
但这对我来说真的很困惑。有人回答说SOL_SOCKET
表示套接字层。什么是套接字层?该参数还有其他可用选项吗?
如果我们传递 SOL_SOCKET
参数会发生什么?SOL
代表什么?
我使用的是 UNIX。
最佳答案
“套接字层”是指操作系统的套接字抽象。这些选项可以独立于您正在处理的套接字类型进行设置。在实践中,您可能只对 TCP/IP 套接字感兴趣,但还有 UDP/IP 套接字、Unix 域套接字等。与SOL_SOCKET
相关的选项可以应用于其中任何一个。 The list provided in the answer of the other question有其中一些;在 manual page of sockets在“套接字选项”部分下还有更多。
SOL_SOCKET
是与该级别关联的“协议(protocol)号”常量。对于其他协议(protocol)或级别,您可以使用getprotoent
从协议(protocol)名称中获取协议(protocol)编号,或查看协议(protocol)手册 - 例如,manual page of IP描述了 IP (IPPROTO_IP
)、TCP (IPPROTO_TCP
) 和 UDP (IPPROTO_UDP
) 协议(protocol)号的常量,而 manual page of Unix sockets说,由于历史原因,它的协议(protocol)选项也必须使用 SOL_SOCKET 来设置。此外,您可以在 /etc/protocols
中找到您的系统支持的协议(protocol)列表。当然,每个协议(protocol)支持的选项都在其手册中:IP , TCP , UDP , Unix sockets ...
关于sockets - getsockopt 中的参数级别是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26281787/