recv_nonblock(...)
public
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 result, mesg, is
the data received.
When recvfrom(2) returns 0, Socket#recv_nonblock returns an empty string as
data. The meaning depends on the socket: EOF on TCP, empty packet on UDP,
etc.
Parameters
- maxlen - the number of bytes to receive from the socket
- flags - zero or more of the MSG_ options
Example
serv = TCPServer.new("127.0.0.1", 0)
af, port, host, addr = serv.addr
c = TCPSocket.new(addr, port)
s = serv.accept
c.send "aaa", 0
IO.select([s])
p s.recv_nonblock(10)
Refer to Socket#recvfrom for the
exceptions that may be thrown if the call to recv_nonblock fails.
BasicSocket#recv_nonblock may
raise any error corresponding to recvfrom(2) failure, including
Errno::EAGAIN.
See
Show source
/*
* call-seq:
* basicsocket.recv_nonblock(maxlen) => mesg
* basicsocket.recv_nonblock(maxlen, flags) => mesg
*
* 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 result, _mesg_, is the data received.
*
* When recvfrom(2) returns 0, Socket#recv_nonblock returns
* an empty string as data.
* The meaning depends on the socket: EOF on TCP, empty packet on UDP, etc.
*
* === Parameters
* * +maxlen+ - the number of bytes to receive from the socket
* * +flags+ - zero or more of the +MSG_+ options
*
* === Example
* serv = TCPServer.new("127.0.0.1", 0)
* af, port, host, addr = serv.addr
* c = TCPSocket.new(addr, port)
* s = serv.accept
* c.send "aaa", 0
* IO.select([s])
* p s.recv_nonblock(10) #=> "aaa"
*
* Refer to Socket#recvfrom for the exceptions that may be thrown if the call
* to _recv_nonblock_ fails.
*
* BasicSocket#recv_nonblock may raise any error corresponding to recvfrom(2) failure,
* including Errno::EAGAIN.
*
* === See
* * Socket#recvfrom
*/
static VALUE
bsock_recv_nonblock(argc, argv, sock)
int argc;
VALUE *argv;
VALUE sock;
{
return s_recvfrom_nonblock(sock, argc, argv, RECV_RECV);
}