Ruby 4.0 リファレンスマニュアル

instance method BasicSocket#getsockopt

getsockopt(level, optname) -> Socket::Option[permalink][rdoc][edit]

ソケットのオプションを取得します。getsockopt(2) を参照してください。取得したオプションのデータを Socket::Option で返します。

level, optname には Socket::SOL_SOCKET や Socket::SO_REUSEADDR といった整数値の他、文字列("SOL_SOCKET", prefixなしの "SOCKET")やシンボル(:SO_REUSEADDR, :REUSEADDR)を用いることができます。

[PARAM] level:
getsockopt(2) の 第二引数のlevel
[PARAM] optname:
getsockopt(2) の 第三引数のoption_name

[SEE_ALSO] BasicSocket#setsockopt

require 'socket'

serv = Socket.tcp_server_sockets("", 0)[0]
c = serv.local_address.connect
s = serv.accept
opt = c.getsockopt(Socket::IPPROTO_TCP, Socket::TCP_NODELAY)
# c.getsockopt("TCP", "NODELAY"),  なども可能
p opt # => #<Socket::Option: INET TCP NODELAY 0>
p opt.bool # => false (Nagle アルゴリズム有効)
p opt.unpack("i")[0] # => 0 (Socket::Option#unpack が互換性のために存在する)
# 整数値の場合は Socket::Option#int を用いる
p c.getsockopt(:IP, :TTL).int # => 64