私はグーグル全体を検索しましたが、この問題の解決策が見つかりません:
Android デバイスで基本的なソケット プログラミング (クライアント/サーバー アプリ) を実行しようとしていますが、サーバー アプリを起動できません。ネイティブ コードで bind(...) を呼び出すと、ログから -1 が返されることがわかります。errno を確認すると、値は 97 (EAFNOSUPPORT) であり、「プロトコルでサポートされていないアドレス ファミリ」を示しています。sin_family の値を確認したところ、IPv4 である AF_INET でした。これは 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 が返されます。