本文简要介绍ruby语言中 BasicSocket.getsockopt
的用法。
用法
getsockopt(level, optname) → socketoption
获取套接字选项。这些是特定于协议和系统的,有关详细信息,请参阅您的本地系统文档。该选项作为 Socket::Option
对象返回。
参数
-
level
是一个整数,通常是 SOL_ 常量之一,例如 Socket::SOL_SOCKET,或协议级别。名称的字符串或符号,可能没有前缀,也被接受。 -
optname
是一个整数,通常是SO_常量之一,如Socket::SO_REUSEADDR。名称的字符串或符号,可能没有前缀,也被接受。
例子
一些套接字选项是带有布尔值的整数,在这种情况下 getsockopt
可以这样调用:
reuseaddr = sock.getsockopt(:SOCKET, :REUSEADDR).bool
optval = sock.getsockopt(Socket::SOL_SOCKET,Socket::SO_REUSEADDR)
optval = optval.unpack "i"
reuseaddr = optval[0] == 0 ? false : true
一些套接字选项是带有数值的整数,在这种情况下 getsockopt
可以这样调用:
ipttl = sock.getsockopt(:IP, :TTL).int
optval = sock.getsockopt(Socket::IPPROTO_IP, Socket::IP_TTL)
ipttl = optval.unpack1("i")
选项值可以是结构。解码它们可能很复杂,因为它涉及检查系统标头以确定正确的定义。一个例子是 +struct linger+,它可以在你的系统头文件中定义为:
struct linger {
int l_onoff;
int l_linger;
};
在这种情况下, getsockopt
可以这样调用:
# Socket::Option knows linger structure.
onoff, linger = sock.getsockopt(:SOCKET, :LINGER).linger
optval = sock.getsockopt(Socket::SOL_SOCKET, Socket::SO_LINGER)
onoff, linger = optval.unpack "ii"
onoff = onoff == 0 ? false : true
相关用法
- Ruby BasicSocket.getsockname用法及代码示例
- Ruby BasicSocket.getpeereid用法及代码示例
- Ruby BasicSocket.getpeername用法及代码示例
- Ruby BasicSocket.send用法及代码示例
- Ruby BasicSocket.remote_address用法及代码示例
- Ruby BasicSocket.recv用法及代码示例
- Ruby BasicSocket.do_not_reverse_lookup用法及代码示例
- Ruby BasicSocket.do_not_reverse_lookup =用法及代码示例
- Ruby BasicSocket.connect_address用法及代码示例
- Ruby BasicSocket.recv_nonblock用法及代码示例
- Ruby BasicSocket.recvmsg用法及代码示例
- Ruby BasicSocket.local_address用法及代码示例
- Ruby BasicSocket.shutdown用法及代码示例
- Ruby BasicSocket.close_read用法及代码示例
- Ruby BasicSocket.sendmsg用法及代码示例
- Ruby BasicSocket.close_write用法及代码示例
- Ruby BasicSocket.setsockopt用法及代码示例
- Ruby BasicSocket.for_fd用法及代码示例
- Ruby BasicSpecification.require_paths用法及代码示例
- Ruby BasicObject.equal?用法及代码示例
- Ruby BasicObject.instance_eval用法及代码示例
- Ruby BasicObject.obj ==用法及代码示例
- Ruby BasicObject.method_missing用法及代码示例
- Ruby BasicObject.singleton_method_undefined用法及代码示例
- Ruby BasicObject.send用法及代码示例
注:本文由纯净天空筛选整理自ruby-lang.org大神的英文原创作品 BasicSocket.getsockopt。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。