This is a Ruby tree! It shows every object from the Ruby Programming Language in a tree format.
# Socket.recvfrom_nonblock (from ruby core) --- socket.recvfrom_nonblock(maxlen[, flags[, outbuf[, opts]]]) => [mesg, sender_addrinfo] --- Receives up to *maxlen* bytes from `socket` using recvfrom(2) after O_NONBLOCK is set for the underlying file descriptor. *flags* is zero or more of the `MSG_` options. The first element of the results, *mesg*, is the data received. The second element, *sender_addrinfo*, contains protocol-specific address information of the sender. When recvfrom(2) returns 0, Socket#recvfrom_nonblock returns an empty string as data. The meaning depends on the socket: EOF on TCP, empty packet on UDP, etc. ### Parameters * `maxlen` - the maximum number of bytes to receive from the socket * `flags` - zero or more of the `MSG_` options * `outbuf` - destination String buffer * `opts` - keyword hash, supporting `exception: false` ### Example # In one file, start this first require 'socket' include Socket::Constants socket = Socket.new(AF_INET, SOCK_STREAM, 0) sockaddr = Socket.sockaddr_in(2200, 'localhost') socket.bind(sockaddr) socket.listen(5) client, client_addrinfo = socket.accept begin # emulate blocking recvfrom pair = client.recvfrom_nonblock(20) rescue IO::WaitReadable IO.select([client]) retry end data = pair[0].chomp puts "I only received 20 bytes '#{data}'" sleep 1 socket.close # In another file, start this second require 'socket' include Socket::Constants socket = Socket.new(AF_INET, SOCK_STREAM, 0) sockaddr = Socket.sockaddr_in(2200, 'localhost') socket.connect(sockaddr) socket.puts "Watch this get cut short!" socket.close Refer to Socket#recvfrom for the exceptions that may be thrown if the call to *recvfrom_nonblock* fails. Socket#recvfrom_nonblock may raise any error corresponding to recvfrom(2) failure, including Errno::EWOULDBLOCK. If the exception is Errno::EWOULDBLOCK or Errno::EAGAIN, it is extended by IO::WaitReadable. So IO::WaitReadable can be used to rescue the exceptions for retrying recvfrom_nonblock. By specifying a keyword argument *exception* to `false`, you can indicate that recvfrom_nonblock should not raise an IO::WaitReadable exception, but return the symbol `:wait_readable` instead. ### See * Socket#recvfrom
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.