當前位置: 首頁>>編程示例 >>用法及示例精選 >>正文


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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。