当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Ruby BasicSocket.getsockopt用法及代码示例


本文简要介绍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-lang.org大神的英文原创作品 BasicSocket.getsockopt。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。