Ruby 1.9.2 リファレンスマニュアル > ライブラリ一覧 > library socket > class Socket > recvfrom

instance method Socket#recvfrom

recvfrom(maxlen[, flags])

recv と同様にソケットからデータを受け取りますが、 戻り値は文字列と相手ソケットのアドレスのペアです。引数につい ては recv と同様です。

例:

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"]