我有一个程序可以在 Mac OS 10.6 上正常工作,但在 10.8 中莫名其妙地失败了。它的要点是 sendto 现在返回 -1 并将 errno 设置为 EINVAL (22)。怎么了?
问问题
697 次
1 回答
5
我给 sendto 的地址来自 getaddrinfo 的第一个结果。原来,第一个结果现在是 IPV6 结果(使用 sockaddr_in6)。OS 10.8 上的 sendto(至少现在)似乎只适用于 sockaddr_in 地址。确保向 getaddrinfo 传递一个提示,表明您只需要 ipv4 地址,即
struct addrinfo hint;
memset( &hint, 0, sizeof(struct addrinfo));
hint.ai_family = AF_INET;
struct addrinfo* result;
int res = getaddrinfo( friendlyHostname, NULL, &hint, &result );
于 2012-10-29T19:05:58.000 回答