連載中(?)のsendmsg(),recvmsg()を使ったUDP送受信プログラムですが、いよいよIPv6です。IPv6ではIPV6_PKTINFOがどの処理系でも使えるので簡単、と思ったのですが、やってみると意外と苦労しました。。 まず、setsockopt()で指定するのは、IPV6_PKTINFOではなく、IPV6_RECVPKTINFOでないと駄目、というのが、SolarisとLinuxで、そもそもIPV6_RECVPKTINFOが無いのがBSD(MacOSX)というところで苦労しました。RECVPKTINFOと言っているのにsendmsg()にも効果があるのでなぜ?と思ったら、送信するときにはsetsockopt()しなくても、指定すれば有効になるみたいです。同じソケットで送信も受信もするならセットすることになるので、まあ、しておくことにしておけばいい感じです。 つづいて、str
![sendmsg(),recvmsg()を使ったUDP送受信プログラム:IPv6:プログラマー社長のブログ:オルタナティブ・ブログ](https://cdn-ak-scissors.b.st-hatena.com/image/square/3d9067259b8b59a616222befed3d2e6edc79ae85/height=288;version=1;width=512/https%3A%2F%2Fblogs.itmedia.co.jp%2Fmt-static%2Fsupport%2Fassets_c%2Fuserpics%2Fuserpic-122-100x100.png)