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