Can't assign requested address
Linuxでは動作するIPv4マルチキャストを使うプログラムがSnow Leopardにもってきたら動かなかった。
マルチキャストで受信して、その送信元に送り返すという単純なものなのですが、sendto()をすると、
と言われてしまう。
Can't assign requested address
結局、bind()の仕方に問題があった。
元のソースは、
として、マルチキャストアドレスにbind()してしまっていた。
if ((errcode = getaddrinfo(マルチキャストアドレス, ポート, &hints, &res0)) != 0) {
(void) fprintf(stderr, "getaddrinfo():%s\n", gai_strerror(errcode));
return (-1);
}
何故かLinuxではこれで動くのですが、BSD系のSnow Leopardでは動かなかったということです。
getaddrinfo()の第1引数をNULLにして無事動きました。