问题描述
Android调用getaddrinfo失败,错误信息是:Invalid value for ai_flags。ios是正常的。
原因分析
ai_flags 的设置如下:
struct addrinfo hint = {0};
hint.ai_flags = AI_DEFAULT;
几经搜索,发现是android系统的问题。
Android 上 AI_DEFAULT 是 AI_V4MAPPED_CFG | AI_ADDRCONFIG。网上有种说法是Android和FreeBSD对AI_V4MAPPED_CFG的支持有问题,导致getaddrinfo失败。
解决方案
最后无奈之下,只好把 Android 版本的代码中 ai_flags 的值设为 0。