/* * call-seq: * unixsocket.recvfrom(maxlen [, flags]) => [mesg, unixaddress] * * Receives a message via _unixsocket_. * * _maxlen_ is the maximum number of bytes to receive. * * _flags_ should be a bitwise OR of Socket::MSG_* constants. * * s1 = Socket.new(:UNIX, :DGRAM, 0) * s1_ai = Addrinfo.unix("/tmp/sock1") * s1.bind(s1_ai) * * s2 = Socket.new(:UNIX, :DGRAM, 0) * s2_ai = Addrinfo.unix("/tmp/sock2") * s2.bind(s2_ai) * s3 = UNIXSocket.for_fd(s2.fileno) * * s1.send "a", 0, s2_ai * p s3.recvfrom(10) #=> ["a", ["AF_UNIX", "/tmp/sock1"]] * */ static VALUE unix_recvfrom(int argc, VALUE *argv, VALUE sock) { return rsock_s_recvfrom(sock, argc, argv, RECV_UNIX); }
/* * call-seq: * basicsocket.recv(maxlen) => mesg * basicsocket.recv(maxlen, flags) => mesg * * Receives a message. * * _maxlen_ is the maximum number of bytes to receive. * * _flags_ should be a bitwise OR of Socket::MSG_* constants. * * UNIXSocket.pair {|s1, s2| * s1.puts "Hello World" * p s2.recv(4) #=> "Hell" * p s2.recv(4, Socket::MSG_PEEK) #=> "o Wo" * p s2.recv(4) #=> "o Wo" * p s2.recv(10) #=> "rld\n" * } */ static VALUE bsock_recv(int argc, VALUE *argv, VALUE sock) { return rsock_s_recvfrom(sock, argc, argv, RECV_RECV); }
/* * call-seq: * basicsocket.recv(maxlen) => mesg * basicsocket.recv(maxlen, flags) => mesg * * Receives a message. * * _maxlen_ is the maximum number of bytes to receive. * * _flags_ should be a bitwise OR of Socket::MSG_* constants. * * UNIXSocket.pair {|s1, s2| * s1.puts "Hello World" * p s2.recv(4) #=> "Hell" * p s2.recv(4, Socket::MSG_PEEK) #=> "o Wo" * p s2.recv(4) #=> "o Wo" * p s2.recv(10) #=> "rld\n" * } */ static VALUE bsock_recv(int argc, VALUE *argv, VALUE sock) { UNRUBBY_SOCKET_HACK; return rsock_s_recvfrom(sock, argc, argv, RECV_RECV); }
/* * call-seq: * ipsocket.recvfrom(maxlen) => [mesg, ipaddr] * ipsocket.recvfrom(maxlen, flags) => [mesg, ipaddr] * * Receives a message and return the message as a string and * an address which the message come from. * * _maxlen_ is the maximum number of bytes to receive. * * _flags_ should be a bitwise OR of Socket::MSG_* constants. * * ipaddr is same as IPSocket#{peeraddr,addr}. * * u1 = UDPSocket.new * u1.bind("127.0.0.1", 4913) * u2 = UDPSocket.new * u2.send "uuuu", 0, "127.0.0.1", 4913 * p u1.recvfrom(10) #=> ["uuuu", ["AF_INET", 33230, "localhost", "127.0.0.1"]] * */ static VALUE ip_recvfrom(int argc, VALUE *argv, VALUE sock) { return rsock_s_recvfrom(sock, argc, argv, RECV_IP); }