I’ve searched all over google and can’t find a solution to this problem:
I’m trying to do some basic socket programming (client/server apps) on my Android device and I’m not having any luck starting the Server app. In my native code, I call bind(…) and I see from the log that it returns -1. When I check errno, the value is 97 (EAFNOSUPPORT), which indicates “Address family not supported by protocol.” When I checked the values for sin_family, it was AF_INET, which is IPv4. Is this not supported by the Android NDK? If not, what else could be the cause of this error?
Socket is initialized as:
sock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP));
listenAddr is a sockaddr_in struct that’s initialized with:
sin_family = AF_INET;
sin_port = htons(9099);
sin_addr.s_addr = INADDR_NONE;
Call to bind:
bindResult = bind(sock, (sockaddr *)listenAddr, sizeof(listenAddr))
Bind result returns -1. Subsequent call to errno returns 97.
Use INADDR_ANY (or a specific interface’s address) rather than INADDR_NONE.
INADDR_NONE is an unsigned constant with the same bit pattern as the signed value -1, returned as an indication of error from certain calls.