This is a Ruby tree! It shows every object from the Ruby Programming Language in a tree format.

setsockopt

        # BasicSocket.setsockopt

(from ruby core)
---
    setsockopt(level, optname, optval)
    setsockopt(socketoption)

---

Sets a socket option. These are protocol and system specific, see your
local system documentation for details.

### Parameters
*   `level` is an integer, usually one of the SOL_ constants such as
    Socket::SOL_SOCKET, or a protocol level. A string or symbol of the
    name, possibly without prefix, is also accepted.
*   `optname` is an integer, usually one of the SO_ constants, such as
    Socket::SO_REUSEADDR. A string or symbol of the name, possibly
    without prefix, is also accepted.
*   `optval` is the value of the option, it is passed to the underlying
    setsockopt() as a pointer to a certain number of bytes. How this is
    done depends on the type:
    *   Integer: value is assigned to an int, and a pointer to the int
        is passed, with length of sizeof(int).
    *   true or false: 1 or 0 (respectively) is assigned to an int, and
        the int is passed as for an Integer. Note that `false` must be
        passed, not `nil`.
    *   String: the string's data and length is passed to the socket.

*   `socketoption` is an instance of Socket::Option


### Examples

Some socket options are integers with boolean values, in this case
#setsockopt could be called like this:
    sock.setsockopt(:SOCKET, :REUSEADDR, true)
    sock.setsockopt(Socket::SOL_SOCKET,Socket::SO_REUSEADDR, true)
    sock.setsockopt(Socket::Option.bool(:INET, :SOCKET, :REUSEADDR, true))

Some socket options are integers with numeric values, in this case
#setsockopt could be called like this:
    sock.setsockopt(:IP, :TTL, 255)
    sock.setsockopt(Socket::IPPROTO_IP, Socket::IP_TTL, 255)
    sock.setsockopt(Socket::Option.int(:INET, :IP, :TTL, 255))

Option values may be structs. Passing them can be complex as it involves
examining your system headers to determine the correct definition. An
example is an `ip_mreq`, which may be defined in your system headers as:
    struct ip_mreq {
      struct  in_addr imr_multiaddr;
      struct  in_addr imr_interface;
    };

In this case #setsockopt could be called like this:
    optval = IPAddr.new("224.0.0.251").hton +
             IPAddr.new(Socket::INADDR_ANY, Socket::AF_INET).hton
    sock.setsockopt(Socket::IPPROTO_IP, Socket::IP_ADD_MEMBERSHIP, optval)



      

This is MURDOC! A Ruby documentation browser inspired by Smalltalk-80. It allows you to learn about Ruby by browsing through its class hierarchies, and see any of its methods.