受け取ったUDPパケットのデスティネーションアドレスを知る方法
マルチホームホストなどで複数のアドレスが振られている場合に、受け取ったパケットがどのアドレス宛てのものなのかを知りたい場合がある。
ソケットAPIのrecvfrom(2)では、パケットを送出した側のソースアドレスを知ることはできても、相手がどのアドレスに送ってきたのかを知ることはできない。
TCPならばaccept()後にgetsockname()で調べることができるけれども、はて、UDPではどうしたらいいのか(おまけ:TCPでもaccept前に知りたい場合があるよね)、というお話。
AoiMoe a.k.aしお兄P
@AoiMoe
まあacceptでも同様の問題があるし、acceptに先だってlistenソケットにrecvmsg/sendmsgすることでキューの先頭の情報を取ったりrejectしたりできるという関連情報
2011-07-01 15:53:04