names=recvfrom
visibility=public
kind=defined

--- recvfrom(maxlen, flags=0) -> [String, Addrinfo]

ソケットからデータを受け取ります。

[[m:Socket#recv]] と同様ですが、返り値として
データ文字列と相手ソケットのアドレスのペアが返されます。

flags には Socket::MSG_* という定数の bitwise OR を渡します。
詳しくは [[man:recvfrom(2)]] を参照してください。

@param maxlen ソケットから受けとるデータの最大値
@param flags フラグ
@raise Errno::EXXX [[man:recvfrom(2)]] がエラーを報告した場合に発生します。詳しくは
       Errno と man を見てください。
例:

  s1 = Socket.new(Socket::AF_INET, Socket::SOCK_DGRAM, 0)
  s2 = Socket.new(Socket::AF_INET, Socket::SOCK_DGRAM, 0)
  s1.bind(Socket.sockaddr_in(0, "0.0.0.0"))
  s2.send("foo", 0, s1.getsockname)
  mesg, sockaddr = s1.recvfrom(10)
  p mesg                                    #=> "foo"
  p sockaddr                                #=> "\002\000\200r\177\000\000\001\000\000\000\000\000\000\000\000"
  p Socket.unpack_sockaddr_in(sockaddr)     #=> [32882, "127.0.0.1"]

