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

Socket

        # Socket < BasicSocket

(from ruby core)
---


Class `Socket` provides access to the underlying operating system socket
implementations.  It can be used to provide more operating system
specific functionality than the protocol-specific socket classes.

The constants defined under Socket::Constants are also defined under
Socket.  For example, Socket::AF_INET is usable as well as
Socket::Constants::AF_INET.  See Socket::Constants for the list of
constants.

### What's a socket?

Sockets are endpoints of a bidirectional communication channel. Sockets
can communicate within a process, between processes on the same machine
or between different machines.  There are many types of socket:
TCPSocket, UDPSocket or UNIXSocket for example.

Sockets have their own vocabulary:

**domain:** The family of protocols:
*   Socket::PF_INET
*   Socket::PF_INET6
*   Socket::PF_UNIX
*   etc.


**type:** The type of communications between the two endpoints,
typically
*   Socket::SOCK_STREAM
*   Socket::SOCK_DGRAM.


**protocol:** Typically *zero*. This may be used to identify a variant
of a protocol.

**hostname:** The identifier of a network interface:
*   a string (hostname, IPv4 or IPv6 address or `broadcast` which
    specifies a broadcast address)
*   a zero-length string which specifies INADDR_ANY
*   an integer (interpreted as binary address in host byte order).


### Quick start

Many of the classes, such as TCPSocket, UDPSocket or UNIXSocket, ease
the use of sockets comparatively to the equivalent C programming
interface.

Let's create an internet socket using the IPv4 protocol in a C-like
manner:

    require 'socket'

    s = Socket.new Socket::AF_INET, Socket::SOCK_STREAM
    s.connect Socket.pack_sockaddr_in(80, 'example.com')

You could also use the TCPSocket class:

    s = TCPSocket.new 'example.com', 80

A simple server might look like this:

    require 'socket'

    server = TCPServer.new 2000 # Server bound to port 2000

    loop do
      client = server.accept    # Wait for a client to connect
      client.puts "Hello !"
      client.puts "Time is #{Time.now}"
      client.close
    end

A simple client may look like this:

    require 'socket'

    s = TCPSocket.new 'localhost', 2000

    while line = s.gets # Read lines from socket
      puts line         # and print them
    end

    s.close             # close socket when done

### Exception Handling

Ruby's Socket implementation raises exceptions based on the error
generated by the system dependent implementation.  This is why the
methods are documented in a way that isolate Unix-based system
exceptions from Windows based exceptions. If more information on a
particular exception is needed, please refer to the Unix manual pages or
the Windows WinSock reference.

### Convenience methods

Although the general way to create socket is Socket.new, there are
several methods of socket creation for most cases.

TCP client socket
:   Socket.tcp, TCPSocket.open
TCP server socket
:   Socket.tcp_server_loop, TCPServer.open
UNIX client socket
:   Socket.unix, UNIXSocket.open
UNIX server socket
:   Socket.unix_server_loop, UNIXServer.open


### Documentation by

*   Zach Dennis
*   Sam Roberts
*   *Programming Ruby* from The Pragmatic Bookshelf.


Much material in this documentation is taken with permission from
*Programming Ruby* from The Pragmatic Bookshelf.

---
# Constants:

AF_ALG
:   Interface to kernel crypto API

AF_APPLETALK
:   AppleTalk protocol

AF_ATM
:   Asynchronous Transfer Mode

AF_AX25
:   AX.25 protocol

AF_BLUETOOTH
:   Bluetooth low-level socket protocol

AF_CAN
:   Controller Area Network automotive bus protocol

AF_CCITT
:   CCITT (now ITU-T) protocols

AF_CHAOS
:   MIT CHAOS protocols

AF_CNT
:   Computer Network Technology

AF_COIP
:   Connection-oriented IP

AF_DATAKIT
:   Datakit protocol

AF_DEC
:   DECnet protocol

AF_DECnet
:   DECnet protocol

AF_DLI
:   DEC Direct Data Link Interface protocol

AF_E164
:   CCITT (ITU-T) E.164 recommendation

AF_ECMA
:   European Computer Manufacturers protocols

AF_HYLINK
:   NSC Hyperchannel protocol

AF_IB
:   InfiniBand native addressing

AF_IMPLINK
:   ARPANET IMP protocol

AF_INET
:   IPv4 protocol

AF_INET6
:   IPv6 protocol

AF_IPX
:   IPX protocol

AF_ISDN
:   Integrated Services Digital Network

AF_ISO
:   ISO Open Systems Interconnection protocols

AF_KCM
:   KCM (kernel connection multiplexor) interface

AF_KEY
:   Key management protocol, originally developed for usage with IPsec

AF_LAT
:   Local Area Transport protocol

AF_LINK
:   Link layer interface

AF_LLC
:   Logical  link control (IEEE 802.2 LLC) protocol

AF_LOCAL
:   Host-internal protocols

AF_MAX
:   Maximum address family for this platform

AF_MPLS
:   Multiprotocol Label Switching

AF_NATM
:   Native ATM access

AF_NDRV
:   Network driver raw access

AF_NETBIOS
:   NetBIOS

AF_NETGRAPH
:   Netgraph sockets

AF_NETLINK
:   Kernel user interface device

AF_NS
:   XEROX NS protocols

AF_OSI
:   ISO Open Systems Interconnection protocols

AF_PACKET
:   Direct link-layer access

AF_PPP
:   Point-to-Point Protocol

AF_PPPOX
:   Generic PPP transport layer, for setting up L2 tunnels (L2TP and
    PPPoE)

AF_PUP
:   PARC Universal Packet protocol

AF_RDS
:   Reliable Datagram Sockets (RDS) protocol

AF_ROUTE
:   Internal routing protocol

AF_SIP
:   Simple Internet Protocol

AF_SNA
:   IBM SNA protocol

AF_SYSTEM
:   [not documented]
AF_TIPC
:   TIPC, "cluster domain sockets" protocol

AF_UNIX
:   UNIX sockets

AF_UNSPEC
:   Unspecified protocol, any supported address family

AF_VSOCK
:   VSOCK (originally "VMWare VSockets") protocol for hypervisor-guest
    communication

AF_XDP
:   XDP (express data path) interface

AI_ADDRCONFIG
:   Accept only if any address is assigned

AI_ALL
:   Allow all addresses

AI_CANONNAME
:   Fill in the canonical name

AI_DEFAULT
:   Default flags for getaddrinfo

AI_MASK
:   Valid flag mask for getaddrinfo (not for application use)

AI_NUMERICHOST
:   Prevent host name resolution

AI_NUMERICSERV
:   Prevent service name resolution

AI_PASSIVE
:   Get address to use with bind()

AI_V4MAPPED
:   Accept IPv4-mapped IPv6 addresses

AI_V4MAPPED_CFG
:   Accept IPv4 mapped addresses if the kernel supports it

EAI_ADDRFAMILY
:   Address family for hostname not supported

EAI_AGAIN
:   Temporary failure in name resolution

EAI_BADFLAGS
:   Invalid flags

EAI_BADHINTS
:   Invalid value for hints

EAI_FAIL
:   Non-recoverable failure in name resolution

EAI_FAMILY
:   Address family not supported

EAI_MAX
:   Maximum error code from getaddrinfo

EAI_MEMORY
:   Memory allocation failure

EAI_NODATA
:   No address associated with hostname

EAI_NONAME
:   Hostname nor servname, or not known

EAI_OVERFLOW
:   Argument buffer overflow

EAI_PROTOCOL
:   Resolved protocol is unknown

EAI_SERVICE
:   Servname not supported for socket type

EAI_SOCKTYPE
:   Socket type not supported

EAI_SYSTEM
:   System error returned in errno

IFF_802_1Q_VLAN
:   802.1Q VLAN device

IFF_ALLMULTI
:   receive all multicast packets

IFF_ALTPHYS
:   use alternate physical connection

IFF_AUTOMEDIA
:   auto media select active

IFF_BONDING
:   bonding master or slave

IFF_BRIDGE_PORT
:   device used as bridge port

IFF_BROADCAST
:   broadcast address valid

IFF_CANTCHANGE
:   flags not changeable

IFF_CANTCONFIG
:   unconfigurable using ioctl(2)

IFF_DEBUG
:   turn on debugging

IFF_DISABLE_NETPOLL
:   disable netpoll at run-time

IFF_DONT_BRIDGE
:   disallow bridging this ether dev

IFF_DORMANT
:   driver signals dormant

IFF_DRV_OACTIVE
:   tx hardware queue is full

IFF_DRV_RUNNING
:   resources allocated

IFF_DYING
:   interface is winding down

IFF_DYNAMIC
:   dialup device with changing addresses

IFF_EBRIDGE
:   ethernet bridging device

IFF_ECHO
:   echo sent packets

IFF_ISATAP
:   ISATAP interface (RFC4214)

IFF_LINK0
:   per link layer defined bit 0

IFF_LINK1
:   per link layer defined bit 1

IFF_LINK2
:   per link layer defined bit 2

IFF_LIVE_ADDR_CHANGE
:   hardware address change when it's running

IFF_LOOPBACK
:   loopback net

IFF_LOWER_UP
:   driver signals L1 up

IFF_MACVLAN_PORT
:   device used as macvlan port

IFF_MASTER
:   master of a load balancer

IFF_MASTER_8023AD
:   bonding master, 802.3ad.

IFF_MASTER_ALB
:   bonding master, balance-alb.

IFF_MASTER_ARPMON
:   bonding master, ARP mon in use

IFF_MONITOR
:   user-requested monitor mode

IFF_MULTICAST
:   supports multicast

IFF_NOARP
:   no address resolution protocol

IFF_NOTRAILERS
:   avoid use of trailers

IFF_OACTIVE
:   transmission in progress

IFF_OVS_DATAPATH
:   device used as Open vSwitch datapath port

IFF_POINTOPOINT
:   point-to-point link

IFF_PORTSEL
:   can set media type

IFF_PPROMISC
:   user-requested promisc mode

IFF_PROMISC
:   receive all packets

IFF_RENAMING
:   interface is being renamed

IFF_ROUTE
:   routing entry installed

IFF_RUNNING
:   resources allocated

IFF_SIMPLEX
:   can't hear own transmissions

IFF_SLAVE
:   slave of a load balancer

IFF_SLAVE_INACTIVE
:   bonding slave not the curr. active

IFF_SLAVE_NEEDARP
:   need ARPs for validation

IFF_SMART
:   interface manages own routes

IFF_STATICARP
:   static ARP

IFF_SUPP_NOFCS
:   sending custom FCS

IFF_TEAM_PORT
:   used as team port

IFF_TX_SKB_SHARING
:   sharing skbs on transmit

IFF_UNICAST_FLT
:   unicast filtering

IFF_UP
:   interface is up

IFF_VOLATILE
:   volatile flags

IFF_WAN_HDLC
:   WAN HDLC device

IFF_XMIT_DST_RELEASE
:   dev_hard_start_xmit() is allowed to release skb->dst

IFNAMSIZ
:   Maximum interface name size

IF_NAMESIZE
:   Maximum interface name size

INADDR_ALLHOSTS_GROUP
:   Multicast group for all systems on this subset

INADDR_ANY
:   A socket bound to INADDR_ANY receives packets from all interfaces
    and sends from the default IP address

INADDR_BROADCAST
:   The network broadcast address

INADDR_LOOPBACK
:   The loopback address

INADDR_MAX_LOCAL_GROUP
:   The last local network multicast group

INADDR_NONE
:   A bitmask for matching no valid IP address

INADDR_UNSPEC_GROUP
:   The reserved multicast group

INET6_ADDRSTRLEN
:   Maximum length of an IPv6 address string

INET_ADDRSTRLEN
:   Maximum length of an IPv4 address string

IPPORT_RESERVED
:   Default minimum address for bind or connect

IPPORT_USERRESERVED
:   Default maximum address for bind or connect

IPPROTO_AH
:   IP6 auth header

IPPROTO_BIP
:   [not documented]
IPPROTO_DSTOPTS
:   IP6 destination option

IPPROTO_EGP
:   Exterior Gateway Protocol

IPPROTO_EON
:   ISO cnlp

IPPROTO_ESP
:   IP6 Encapsulated Security Payload

IPPROTO_FRAGMENT
:   IP6 fragmentation header

IPPROTO_GGP
:   Gateway to Gateway Protocol

IPPROTO_HELLO
:   "hello" routing protocol

IPPROTO_HOPOPTS
:   IP6 hop-by-hop options

IPPROTO_ICMP
:   Control message protocol

IPPROTO_ICMPV6
:   ICMP6

IPPROTO_IDP
:   XNS IDP

IPPROTO_IGMP
:   Group Management Protocol

IPPROTO_IP
:   Dummy protocol for IP

IPPROTO_IPV6
:   IP6 header

IPPROTO_MAX
:   Maximum IPPROTO constant

IPPROTO_ND
:   Sun net disk protocol

IPPROTO_NONE
:   IP6 no next header

IPPROTO_PUP
:   PARC Universal Packet protocol

IPPROTO_RAW
:   Raw IP packet

IPPROTO_ROUTING
:   IP6 routing header

IPPROTO_TCP
:   TCP

IPPROTO_TP
:   ISO transport protocol class 4

IPPROTO_UDP
:   UDP

IPPROTO_XTP
:   Xpress Transport Protocol

IPV6_CHECKSUM
:   Checksum offset for raw sockets

IPV6_DONTFRAG
:   Don't fragment packets

IPV6_DSTOPTS
:   Destination option

IPV6_HOPLIMIT
:   Hop limit

IPV6_HOPOPTS
:   Hop-by-hop option

IPV6_JOIN_GROUP
:   Join a group membership

IPV6_LEAVE_GROUP
:   Leave a group membership

IPV6_MULTICAST_HOPS
:   IP6 multicast hops

IPV6_MULTICAST_IF
:   IP6 multicast interface

IPV6_MULTICAST_LOOP
:   IP6 multicast loopback

IPV6_NEXTHOP
:   Next hop address

IPV6_PATHMTU
:   Retrieve current path MTU

IPV6_PKTINFO
:   Receive packet information with datagram

IPV6_RECVDSTOPTS
:   Receive all IP6 options for response

IPV6_RECVHOPLIMIT
:   Receive hop limit with datagram

IPV6_RECVHOPOPTS
:   Receive hop-by-hop options

IPV6_RECVPATHMTU
:   Receive current path MTU with datagram

IPV6_RECVPKTINFO
:   Receive destination IP address and incoming interface

IPV6_RECVRTHDR
:   Receive routing header

IPV6_RECVTCLASS
:   Receive traffic class

IPV6_RTHDR
:   Allows removal of sticky routing headers

IPV6_RTHDRDSTOPTS
:   Allows removal of sticky destination options header

IPV6_RTHDR_TYPE_0
:   Routing header type 0

IPV6_TCLASS
:   Specify the traffic class

IPV6_UNICAST_HOPS
:   IP6 unicast hops

IPV6_USE_MIN_MTU
:   Use the minimum MTU size

IPV6_V6ONLY
:   Only bind IPv6 with a wildcard bind

IPX_TYPE
:   [not documented]
IP_ADD_MEMBERSHIP
:   Add a multicast group membership

IP_ADD_SOURCE_MEMBERSHIP
:   Add a multicast group membership

IP_BLOCK_SOURCE
:   Block IPv4 multicast packets with a give source address

IP_DEFAULT_MULTICAST_LOOP
:   Default multicast loopback

IP_DEFAULT_MULTICAST_TTL
:   Default multicast TTL

IP_DONTFRAG
:   Don't fragment packets

IP_DROP_MEMBERSHIP
:   Drop a multicast group membership

IP_DROP_SOURCE_MEMBERSHIP
:   Drop a multicast group membership

IP_FREEBIND
:   Allow binding to nonexistent IP addresses

IP_HDRINCL
:   Header is included with data

IP_IPSEC_POLICY
:   IPsec security policy

IP_MAX_MEMBERSHIPS
:   Maximum number multicast groups a socket can join

IP_MINTTL
:   Minimum TTL allowed for received packets

IP_MSFILTER
:   Multicast source filtering

IP_MTU
:   The Maximum Transmission Unit of the socket

IP_MTU_DISCOVER
:   Path MTU discovery

IP_MULTICAST_IF
:   IP multicast interface

IP_MULTICAST_LOOP
:   IP multicast loopback

IP_MULTICAST_TTL
:   IP multicast TTL

IP_ONESBCAST
:   Force outgoing broadcast datagrams to have the undirected broadcast
    address

IP_OPTIONS
:   IP options to be included in packets

IP_PASSSEC
:   Retrieve security context with datagram

IP_PKTINFO
:   Receive packet information with datagrams

IP_PKTOPTIONS
:   Receive packet options with datagrams

IP_PMTUDISC_DO
:   Always send DF frames

IP_PMTUDISC_DONT
:   Never send DF frames

IP_PMTUDISC_WANT
:   Use per-route hints

IP_PORTRANGE
:   Set the port range for sockets with unspecified port numbers

IP_RECVDSTADDR
:   Receive IP destination address with datagram

IP_RECVERR
:   Enable extended reliable error message passing

IP_RECVIF
:   Receive interface information with datagrams

IP_RECVOPTS
:   Receive all IP options with datagram

IP_RECVRETOPTS
:   Receive all IP options for response

IP_RECVSLLA
:   Receive link-layer address with datagrams

IP_RECVTOS
:   Receive TOS with incoming packets

IP_RECVTTL
:   Receive IP TTL with datagrams

IP_RETOPTS
:   IP options to be included in datagrams

IP_ROUTER_ALERT
:   Notify transit routers to more closely examine the contents of an IP
    packet

IP_SENDSRCADDR
:   Source address for outgoing UDP datagrams

IP_TOS
:   IP type-of-service

IP_TRANSPARENT
:   Transparent proxy

IP_TTL
:   IP time-to-live

IP_UNBLOCK_SOURCE
:   Unblock IPv4 multicast packets with a give source address

IP_XFRM_POLICY
:   [not documented]
LOCAL_CONNWAIT
:   Connect blocks until accepted

LOCAL_CREDS
:   Pass credentials to receiver

LOCAL_PEERCRED
:   Retrieve peer credentials

MCAST_BLOCK_SOURCE
:   Block multicast packets from this source

MCAST_EXCLUDE
:   Exclusive multicast source filter

MCAST_INCLUDE
:   Inclusive multicast source filter

MCAST_JOIN_GROUP
:   Join a multicast group

MCAST_JOIN_SOURCE_GROUP
:   Join a multicast source group

MCAST_LEAVE_GROUP
:   Leave a multicast group

MCAST_LEAVE_SOURCE_GROUP
:   Leave a multicast source group

MCAST_MSFILTER
:   Multicast source filtering

MCAST_UNBLOCK_SOURCE
:   Unblock multicast packets from this source

MSG_COMPAT
:   End of record

MSG_CONFIRM
:   Confirm path validity

MSG_CTRUNC
:   Control data lost before delivery

MSG_DONTROUTE
:   Send without using the routing tables

MSG_DONTWAIT
:   This message should be non-blocking

MSG_EOF
:   Data completes connection

MSG_EOR
:   Data completes record

MSG_ERRQUEUE
:   Fetch message from error queue

MSG_FASTOPEN
:   Reduce step of the handshake process

MSG_FIN
:   [not documented]
MSG_FLUSH
:   Start of a hold sequence.  Dumps to so_temp

MSG_HAVEMORE
:   Data ready to be read

MSG_HOLD
:   Hold fragment in so_temp

MSG_MORE
:   Sender will send more

MSG_NOSIGNAL
:   Do not generate SIGPIPE

MSG_OOB
:   Process out-of-band data

MSG_PEEK
:   Peek at incoming message

MSG_PROXY
:   Wait for full request

MSG_RCVMORE
:   Data remains in the current packet

MSG_RST
:   [not documented]
MSG_SEND
:   Send the packet in so_temp

MSG_SYN
:   [not documented]
MSG_TRUNC
:   Data discarded before delivery

MSG_WAITALL
:   Wait for full request or error

NI_DGRAM
:   The service specified is a datagram service (looks up UDP ports)

NI_MAXHOST
:   Maximum length of a hostname

NI_MAXSERV
:   Maximum length of a service name

NI_NAMEREQD
:   A name is required

NI_NOFQDN
:   An FQDN is not required for local hosts, return only the local part

NI_NUMERICHOST
:   Return a numeric address

NI_NUMERICSERV
:   Return the service name as a digit string

PF_ALG
:   Interface to kernel crypto API

PF_APPLETALK
:   AppleTalk protocol

PF_ATM
:   Asynchronous Transfer Mode

PF_AX25
:   AX.25 protocol

PF_BLUETOOTH
:   Bluetooth low-level socket protocol

PF_CAN
:   Controller Area Network automotive bus protocol

PF_CCITT
:   CCITT (now ITU-T) protocols

PF_CHAOS
:   MIT CHAOS protocols

PF_CNT
:   Computer Network Technology

PF_COIP
:   Connection-oriented IP

PF_DATAKIT
:   Datakit protocol

PF_DEC
:   DECnet protocol

PF_DECnet
:   DECnet protocol

PF_DLI
:   DEC Direct Data Link Interface protocol

PF_ECMA
:   European Computer Manufacturers protocols

PF_HYLINK
:   NSC Hyperchannel protocol

PF_IB
:   InfiniBand native addressing

PF_IMPLINK
:   ARPANET IMP protocol

PF_INET
:   IPv4 protocol

PF_INET6
:   IPv6 protocol

PF_IPX
:   IPX protocol

PF_ISDN
:   Integrated Services Digital Network

PF_ISO
:   ISO Open Systems Interconnection protocols

PF_KCM
:   KCM (kernel connection multiplexor) interface

PF_KEY
:   Key management protocol, originally developed for usage with IPsec

PF_LAT
:   Local Area Transport protocol

PF_LINK
:   Link layer interface

PF_LLC
:   Logical  link control (IEEE 802.2 LLC) protocol

PF_LOCAL
:   Host-internal protocols

PF_MAX
:   Maximum address family for this platform

PF_MPLS
:   Multiprotocol Label Switching

PF_NATM
:   Native ATM access

PF_NDRV
:   Network driver raw access

PF_NETBIOS
:   NetBIOS

PF_NETGRAPH
:   Netgraph sockets

PF_NETLINK
:   Kernel user interface device

PF_NS
:   XEROX NS protocols

PF_OSI
:   ISO Open Systems Interconnection protocols

PF_PACKET
:   Direct link-layer access

PF_PIP
:   [not documented]
PF_PPP
:   Point-to-Point Protocol

PF_PPPOX
:   Generic PPP transport layer, for setting up L2 tunnels (L2TP and
    PPPoE)

PF_PUP
:   PARC Universal Packet protocol

PF_RDS
:   Reliable Datagram Sockets (RDS) protocol

PF_ROUTE
:   Internal routing protocol

PF_RTIP
:   [not documented]
PF_SIP
:   Simple Internet Protocol

PF_SNA
:   IBM SNA protocol

PF_SYSTEM
:   [not documented]
PF_TIPC
:   TIPC, "cluster domain sockets" protocol

PF_UNIX
:   UNIX sockets

PF_UNSPEC
:   Unspecified protocol, any supported address family

PF_VSOCK
:   VSOCK (originally "VMWare VSockets") protocol for hypervisor-guest
    communication

PF_XDP
:   XDP (express data path) interface

PF_XTP
:   eXpress Transfer Protocol

SCM_BINTIME
:   Timestamp (bintime)

SCM_CREDENTIALS
:   The sender's credentials

SCM_CREDS
:   Process credentials

SCM_RIGHTS
:   Access rights

SCM_TIMESTAMP
:   Timestamp (timeval)

SCM_TIMESTAMPING
:   Timestamp (timespec list) (Linux 2.6.30)

SCM_TIMESTAMPNS
:   Timespec (timespec)

SCM_UCRED
:   User credentials

SCM_WIFI_STATUS
:   Wifi status (Linux 3.3)

SHUT_RD
:   Shut down the reading side of the socket

SHUT_RDWR
:   Shut down the both sides of the socket

SHUT_WR
:   Shut down the writing side of the socket

SOCK_CLOEXEC
:   Set the close-on-exec (FD_CLOEXEC) flag on the new file  descriptor.

SOCK_DGRAM
:   A datagram socket provides connectionless, unreliable messaging

SOCK_NONBLOCK
:   Set the O_NONBLOCK file status flag on the open file description
    (see open(2)) referred to by the new file descriptor.

SOCK_PACKET
:   Device-level packet access

SOCK_RAW
:   A raw socket provides low-level access for direct access or
    implementing network protocols

SOCK_RDM
:   A reliable datagram socket provides reliable delivery of messages

SOCK_SEQPACKET
:   A sequential packet socket provides sequenced, reliable two-way
    connection for datagrams

SOCK_STREAM
:   A stream socket provides a sequenced, reliable two-way connection
    for a byte stream

SOL_ATALK
:   AppleTalk socket options

SOL_AX25
:   AX.25 socket options

SOL_IP
:   IP socket options

SOL_IPX
:   IPX socket options

SOL_SOCKET
:   Socket-level options

SOL_TCP
:   TCP socket options

SOL_UDP
:   UDP socket options

SOMAXCONN
:   Maximum connection requests that may be queued for a socket

SOPRI_BACKGROUND
:   Background socket priority

SOPRI_INTERACTIVE
:   Interactive socket priority

SOPRI_NORMAL
:   Normal socket priority

SO_ACCEPTCONN
:   Socket has had listen() called on it

SO_ACCEPTFILTER
:   There is an accept filter

SO_ALLZONES
:   Bypass zone boundaries

SO_ATTACH_FILTER
:   Attach an accept filter

SO_BINDTODEVICE
:   Only send packets from the given interface

SO_BINTIME
:   Receive timestamp with datagrams (bintime)

SO_BPF_EXTENSIONS
:   Query supported BPF extensions (Linux 3.14)

SO_BROADCAST
:   Permit sending of broadcast messages

SO_BUSY_POLL
:   Set the threshold in microseconds for low latency polling (Linux
    3.11)

SO_DEBUG
:   Debug info recording

SO_DETACH_FILTER
:   Detach an accept filter

SO_DOMAIN
:   Domain given for socket() (Linux 2.6.32)

SO_DONTROUTE
:   Use interface addresses

SO_DONTTRUNC
:   Retain unread data

SO_ERROR
:   Get and clear the error status

SO_GET_FILTER
:   Obtain filter set by SO_ATTACH_FILTER (Linux 3.8)

SO_KEEPALIVE
:   Keep connections alive

SO_LINGER
:   Linger on close if data is present

SO_LOCK_FILTER
:   Lock the filter attached to a socket (Linux 3.9)

SO_MAC_EXEMPT
:   Mandatory Access Control exemption for unlabeled peers

SO_MARK
:   Set the mark for mark-based routing (Linux 2.6.25)

SO_MAX_PACING_RATE
:   Cap the rate computed by transport layer. [bytes per second] (Linux
    3.13)

SO_NKE
:   Install socket-level Network Kernel Extension

SO_NOFCS
:   Set netns of a socket (Linux 3.4)

SO_NOSIGPIPE
:   Don't SIGPIPE on EPIPE

SO_NO_CHECK
:   Disable checksums

SO_NREAD
:   Get first packet byte count

SO_OOBINLINE
:   Leave received out-of-band data in-line

SO_PASSCRED
:   Receive SCM_CREDENTIALS messages

SO_PASSSEC
:   Toggle security context passing (Linux 2.6.18)

SO_PEEK_OFF
:   Set the peek offset (Linux 3.4)

SO_PEERCRED
:   The credentials of the foreign process connected to this socket

SO_PEERNAME
:   Name of the connecting user

SO_PEERSEC
:   Obtain the security credentials (Linux 2.6.2)

SO_PRIORITY
:   The protocol-defined priority for all packets on this socket

SO_PROTOCOL
:   Protocol given for socket() (Linux 2.6.32)

SO_RCVBUF
:   Receive buffer size

SO_RCVBUFFORCE
:   Receive buffer size without rmem_max limit (Linux 2.6.14)

SO_RCVLOWAT
:   Receive low-water mark

SO_RCVTIMEO
:   Receive timeout

SO_RECVUCRED
:   Receive user credentials with datagram

SO_REUSEADDR
:   Allow local address reuse

SO_REUSEPORT
:   Allow local address and port reuse

SO_RXQ_OVFL
:   Toggle cmsg for number of packets dropped (Linux 2.6.33)

SO_SECURITY_AUTHENTICATION
:   [not documented]
SO_SECURITY_ENCRYPTION_NETWORK
:   [not documented]
SO_SECURITY_ENCRYPTION_TRANSPORT
:   [not documented]
SO_SELECT_ERR_QUEUE
:   Make select() detect socket error queue with errorfds (Linux 3.10)

SO_SNDBUF
:   Send buffer size

SO_SNDBUFFORCE
:   Send buffer size without wmem_max limit (Linux 2.6.14)

SO_SNDLOWAT
:   Send low-water mark

SO_SNDTIMEO
:   Send timeout

SO_TIMESTAMP
:   Receive timestamp with datagrams (timeval)

SO_TIMESTAMPING
:   Time stamping of incoming and outgoing packets (Linux 2.6.30)

SO_TIMESTAMPNS
:   Receive nanosecond timestamp with datagrams (timespec)

SO_TYPE
:   Get the socket type

SO_USELOOPBACK
:   Bypass hardware when possible

SO_WANTMORE
:   Give a hint when more data is ready

SO_WANTOOBFLAG
:   OOB data is wanted in MSG_FLAG on receive

SO_WIFI_STATUS
:   Toggle cmsg for wifi status (Linux 3.3)

TCP_CONGESTION
:   TCP congestion control algorithm (Linux 2.6.13, glibc 2.6)

TCP_COOKIE_TRANSACTIONS
:   TCP Cookie Transactions (Linux 2.6.33, glibc 2.18)

TCP_CORK
:   Don't send partial frames (Linux 2.2, glibc 2.2)

TCP_DEFER_ACCEPT
:   Don't notify a listening socket until data is ready (Linux 2.4,
    glibc 2.2)

TCP_FASTOPEN
:   Reduce step of the handshake process (Linux 3.7, glibc 2.18)

TCP_INFO
:   Retrieve information about this socket (Linux 2.4, glibc 2.2)

TCP_KEEPCNT
:   Maximum number of keepalive probes allowed before dropping a
    connection (Linux 2.4, glibc 2.2)

TCP_KEEPIDLE
:   Idle time before keepalive probes are sent (Linux 2.4, glibc 2.2)

TCP_KEEPINTVL
:   Time between keepalive probes (Linux 2.4, glibc 2.2)

TCP_LINGER2
:   Lifetime of orphaned FIN_WAIT2 sockets (Linux 2.4, glibc 2.2)

TCP_MAXSEG
:   Set maximum segment size

TCP_MD5SIG
:   Use MD5 digests (RFC2385, Linux 2.6.20, glibc 2.7)

TCP_NODELAY
:   Don't delay sending to coalesce packets

TCP_NOOPT
:   Don't use TCP options

TCP_NOPUSH
:   Don't push the last block of write

TCP_QUEUE_SEQ
:   Sequence of a queue for repair mode (Linux 3.5, glibc 2.18)

TCP_QUICKACK
:   Enable quickack mode (Linux 2.4.4, glibc 2.3)

TCP_REPAIR
:   Repair mode (Linux 3.5, glibc 2.18)

TCP_REPAIR_OPTIONS
:   Options for repair mode (Linux 3.5, glibc 2.18)

TCP_REPAIR_QUEUE
:   Queue for repair mode (Linux 3.5, glibc 2.18)

TCP_SYNCNT
:   Number of SYN retransmits before a connection is dropped (Linux 2.4,
    glibc 2.2)

TCP_THIN_DUPACK
:   Duplicated acknowledgments handling for thin-streams (Linux 2.6.34,
    glibc 2.18)

TCP_THIN_LINEAR_TIMEOUTS
:   Linear timeouts for thin-streams (Linux 2.6.34, glibc 2.18)

TCP_TIMESTAMP
:   TCP timestamp (Linux 3.9, glibc 2.18)

TCP_USER_TIMEOUT
:   Max timeout before a TCP connection is aborted (Linux 2.6.37, glibc
    2.18)

TCP_WINDOW_CLAMP
:   Clamp the size of the advertised window (Linux 2.4, glibc 2.2)

UDP_CORK
:   Don't send partial frames (Linux 2.5.44, glibc 2.11)



# Class methods:

    accept_loop
    getaddrinfo
    gethostbyaddr
    gethostbyname
    gethostname
    getifaddrs
    getnameinfo
    getservbyname
    getservbyport
    ip_address_list
    new
    pack_sockaddr_in
    pack_sockaddr_un
    pair
    sockaddr_in
    sockaddr_un
    socketpair
    tcp
    tcp_server_loop
    tcp_server_sockets
    udp_server_loop
    udp_server_loop_on
    udp_server_recv
    udp_server_sockets
    unix
    unix_server_loop
    unix_server_socket
    unix_socket_abstract_name?
    unpack_sockaddr_in
    unpack_sockaddr_un

# Instance methods:

    accept
    accept_nonblock
    bind
    connect
    connect_nonblock
    ipv6only!
    listen
    recvfrom
    recvfrom_nonblock
    sysaccept


      

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.