This is a Ruby tree! It shows every object from the Ruby Programming Language in a tree format.
# UNIXServer.listen (from ruby core) --- socket.listen( int ) => 0 --- Listens for connections, using the specified `int` as the backlog. A call to *listen* only applies if the `socket` is of type SOCK_STREAM or SOCK_SEQPACKET. ### Parameter * `backlog` - the maximum length of the queue for pending connections. ### Example 1 require 'socket' include Socket::Constants socket = Socket.new( AF_INET, SOCK_STREAM, 0 ) sockaddr = Socket.pack_sockaddr_in( 2200, 'localhost' ) socket.bind( sockaddr ) socket.listen( 5 ) ### Example 2 (listening on an arbitrary port, unix-based systems only): require 'socket' include Socket::Constants socket = Socket.new( AF_INET, SOCK_STREAM, 0 ) socket.listen( 1 ) ### Unix-based Exceptions On unix based systems the above will work because a new `sockaddr` struct is created on the address ADDR_ANY, for an arbitrary port number as handed off by the kernel. It will not work on Windows, because Windows requires that the `socket` is bound by calling *bind* before it can *listen*. If the *backlog* amount exceeds the implementation-dependent maximum queue length, the implementation's maximum queue length will be used. On unix-based based systems the following system exceptions may be raised if the call to *listen* fails: * Errno::EBADF - the *socket* argument is not a valid file descriptor * Errno::EDESTADDRREQ - the *socket* is not bound to a local address, and the protocol does not support listening on an unbound socket * Errno::EINVAL - the *socket* is already connected * Errno::ENOTSOCK - the *socket* argument does not refer to a socket * Errno::EOPNOTSUPP - the *socket* protocol does not support listen * Errno::EACCES - the calling process does not have appropriate privileges * Errno::EINVAL - the *socket* has been shut down * Errno::ENOBUFS - insufficient resources are available in the system to complete the call ### Windows Exceptions On Windows systems the following system exceptions may be raised if the call to *listen* fails: * Errno::ENETDOWN - the network is down * Errno::EADDRINUSE - the socket's local address is already in use. This usually occurs during the execution of *bind* but could be delayed if the call to *bind* was to a partially wildcard address (involving ADDR_ANY) and if a specific address needs to be committed at the time of the call to *listen* * Errno::EINPROGRESS - a Windows Sockets 1.1 call is in progress or the service provider is still processing a callback function * Errno::EINVAL - the `socket` has not been bound with a call to *bind*. * Errno::EISCONN - the `socket` is already connected * Errno::EMFILE - no more socket descriptors are available * Errno::ENOBUFS - no buffer space is available * Errno::ENOTSOC - `socket` is not a socket * Errno::EOPNOTSUPP - the referenced `socket` is not a type that supports the *listen* method ### See * listen manual pages on unix-based systems * listen function in Microsoft's Winsock functions reference
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.