簡體   English   中英

在Mac OS X 10.8上sendto返回EINVAL

[英]sendto returning EINVAL on Mac OS X 10.8

我有一個可以在Mac OS 10.6上正常運行的程序,但在10.8中莫名其妙地失敗了。 要點是sendto現在返回-1並將errno設置為EINVAL(22)。 怎么了

我給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 );

閱讀http://linux.die.net/man/3/getaddrinfo以獲得更多信息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM