instance method IPSocket#recvfrom

recvfrom(maxlen, flags = 0) -> Array[permalink][rdoc]

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

[PARAM] maxlen:
受け取る文字列の最大の長さを指定します。
[PARAM] flags:
recv(2) を参照してください。
[EXCEPTION] IOError:
[EXCEPTION] Errno::EXXX:
recvfrom(2) がエラーになった場合などに発生します。

例:

require 'socket'

s1 = UDPSocket.new
s1.bind("0.0.0.0", 0) # 適当に空いている port を割り当てる
s2 = UDPSocket.new
s2.send("foo", 0, s1.getsockname)
mesg, inet_addr = s1.recvfrom(100)
p mesg            #=> "foo"
p inet_addr       #=> ["AF_INET", 32876, "localhost.localdomain", "127.0.0.1"]