我在谷歌上搜索过,找不到解决这个问题的方法:
我正在尝试在我的 Android 设备上进行一些基本的套接字编程(客户端/服务器应用程序),但我没有任何运气来启动服务器应用程序。在我的本机代码中,我调用了 bind(...),我从日志中看到它返回 -1。当我检查errno时,值为97(EAFNOSUPPORT),表示“协议不支持地址族”。当我检查 sin_family 的值时,它是 AF_INET,即 IPv4。Android NDK 不支持吗?如果不是,还有什么可能是导致此错误的原因?
套接字初始化为:
sock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP));
listenAddr 是一个 sockaddr_in 结构,初始化为:
sin_family = AF_INET;
sin_port = htons(9099);
sin_addr.s_addr = INADDR_NONE;
调用绑定:
bindResult = bind(sock, (sockaddr *)listenAddr, sizeof(listenAddr))
绑定结果返回-1。对 errno 的后续调用返回 97。