我有一个适用于Mac OS 10.6的程序但在10.8中莫名其妙地失败了。它的要点是sendto现在返回-1并将errno设置为EINVAL(22)。出了什么问题?
答案 0 :(得分:5)
我给sendto的地址来自getaddrinfo的第一个结果。事实证明,第一个结果现在是IPV6结果(使用sockaddr_in6)。 OS 10.8上的sendto(至少目前为止)似乎只适用于sockaddr_in地址。确保传递一个提示,告诉你只需要ipv4地址的getaddrinfo,即
struct addrinfo hint;
memset( &hint, 0, sizeof(struct addrinfo));
hint.ai_family = AF_INET;
struct addrinfo* result;
int res = getaddrinfo( friendlyHostname, NULL, &hint, &result );