instance method Socket::AncillaryData#ip_pktinfo

ip_pktinfo -> [Addrinfo, Integer, Addrinfo][permalink][rdoc]

自身の type が IP_PKTINFO である場合、保持しているデータ (アドレス、インターフェースのインデックス、ローカルアドレス) を3要素の配列で返します。

IP_PKTINFO は非標準的拡張であり、システムによっては使えない場合があります。

require 'socket'

addr = Addrinfo.ip("127.0.0.1")
ifindex = 0
spec_dest = Addrinfo.ip("127.0.0.1")
ancdata = Socket::AncillaryData.ip_pktinfo(addr, ifindex, spec_dest)
p ancdata.ip_pktinfo
#=> [#<Addrinfo: 127.0.0.1>, 0, #<Addrinfo: 127.0.0.1>]
[EXCEPTION] TypeError:
level, type が IPPROTO_IP, IP_PKTINFO でない場合に発生します。

[SEE_ALSO] Socket::AncillaryData.ip_pktinfo, Socket::Constants::IP_PKTINFO