names=getsockopt
visibility=public
kind=defined

--- getsockopt(level, optname) -> Socket::Option

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

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

@param level    [[man:getsockopt(2)]] の 第二引数のlevel 
@param optname  [[man:getsockopt(2)]] の 第三引数のoption_name 
@see [[m:BasicSocket#setsockopt]]

例:

  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

