¿Por qué iOS evita el enlace al puerto UDP 6785 (IN_ADDRANY)?

Estoy trabajando en una aplicación que utiliza el puerto UDP 6785 para descubrir los dataloggers conectados a la networking. Mi aplicación intenta llamar a bind () de la siguiente manera:

int socket_handle; int error = 0; socket_handle = socket(AF_INET, SOCK_DGRAM, 0); if(socket_handle < 0) error = errno; if(error == 0) { struct sockaddr_in addr; memset(&addr, 0, sizeof(addr)); addr.sin_len = sizeof(addr); addr.sin_family = AF_INET; addr.sin_port = htons(6785); addr.sin_addr.s_addr = htonl(INADDR_ANY); error = bind(socket_handle, (struct sockaddr const *)&addr, sizeof(addr)); } 

El error devuelto por bind () es el error 49 (no se puede asignar la dirección solicitada). ¿Esto está sucediendo debido a un conflicto con algún service de dispositivo interno o está siendo bloqueado por el SO por alguna razón desconocida?

Resulta que el error no ocurre si tengo la VPN desactivada. Tuve que habilitar VPN para poder acceder a nuestra networking local desde wifi.

Pruebe esto antes de llamar a bind (). Esto resuelve el problema si el puerto está siendo bloqueado por un TIME_WAIT

 int optval = 1; setsockopt(socket_handle, SOL_SOCKET, SO_REUSEADDR, &optval, sizeof(optval));