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

recvfrom_nonblock

        # 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.