sockets - getsockopt 中的参数级别是什么?

标签 sockets unix setsockopt

我得到以下链接: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/

相关文章:

c++ - 如何通过 usb Lacewing::Client 接收数据?

linux - 处理 git 的行尾

c - Socket C - setsockopt超时在关闭之前做一些事情

python - Python中的socket.SOL_SOCKET和socket.SO_REUSEADDR有什么作用

python - 在 Linux 上增加 tcp 接收窗口

python - Python s.recv()返回空字符串

c++ - 使用 boost::asio 从套接字读取 JSON

sockets - golang net.UDPConn 和 net.TCPConn 线程安全吗??我可以在多线程中读取或写入单个 UDPConn 对象吗?

c - 用于打印 “stat”缓冲区内容的格式说明符

linux - 如何在 CentOs(或任何 LINUX/UNIX 系统)上构建/安装 protobuf 2.4.1?