Tengo un código que me permite determinar la dirección MAC y la dirección IP de la conexión WiFi en el iPhone, pero no entiendo cómo obtener la Máscara de subred y la dirección del enrutador la conexión. Puede alguien señalarme la dirección correcta?iPhone Máscara de subred WiFi y dirección del enrutador
11
A
Respuesta
13
Puede obtener esa información llamando al getifaddrs. (Utilizo esta función en una aplicación de la mina para averiguar la dirección IP del iPhone.)
struct ifaddrs *ifa = NULL, *ifList;
getifaddrs(&ifList); // should check for errors
for (ifa = ifList; ifa != NULL; ifa = ifa->ifa_next) {
ifa->ifa_addr // interface address
ifa->ifa_netmask // subnet mask
ifa->ifa_dstaddr // broadcast address, NOT router address
}
freeifaddrs(ifList); // clean up after yourself
Esto le pone la máscara de subred; para the router address, see this question.
Esto es todo lo de la red UNIX de la vieja escuela, tendrás que elegir cuál de las interfaces es la conexión WiFi (otras cosas como una interfaz loopback también estarán ahí). Entonces puede que tenga que usar funciones como inet_ntoa() dependiendo del formato en que desee leer las direcciones IP. No está mal, solo es tedioso y feo. ¡Que te diviertas!
3
NSString *address = @"error";
NSString *netmask = @"error";
struct ifaddrs *interfaces = NULL;
struct ifaddrs *temp_addr = NULL;
int success = 0;
// retrieve the current interfaces - returns 0 on success
success = getifaddrs(&interfaces);
if (success == 0)
{
// Loop through linked list of interfaces
temp_addr = interfaces;
while(temp_addr != NULL)
{
if(temp_addr->ifa_addr->sa_family == AF_INET)
{
// Check if interface is en0 which is the wifi connection on the iPhone
if([[NSString stringWithUTF8String:temp_addr->ifa_name] isEqualToString:@"en0"])
{
// Get NSString from C String
address = [NSString stringWithUTF8String:inet_ntoa(((struct sockaddr_in *)temp_addr->ifa_addr)->sin_addr)];
netmask = [NSString stringWithUTF8String:inet_ntoa(((struct sockaddr_in *)temp_addr->ifa_netmask)->sin_addr)];
}
}
temp_addr = temp_addr->ifa_next;
}
}
// Free memory
freeifaddrs(interfaces);
NSLog(@"address %@", address);
NSLog(@"netmask %@", netmask);
Cuestiones relacionadas
- 1. Conversión de dirección CIDR en máscara de subred y dirección de red
- 2. problema máscara cálculo de subred
- 3. Obtención de la dirección IP del enrutador al que está conectado el iPhone
- 4. Calcular la emisión en dirección de IP y la máscara de subred
- 5. Objective-C: cómo recuperar la dirección del enrutador?
- 6. Uso de una máscara de subred no convencional
- 7. ¿Cómo obtener la máscara de subred del sistema local usando java?
- 8. Es la dirección IP en la misma subred que la máquina local (con soporte IPv6)
- 9. Validar una dirección IP (con máscara)
- 10. Coincidencia de la dirección IPv6 con una subred CIDR
- 11. ¿Detecta la dirección IP wifi en Android?
- 12. Listar/Buscar WiFi disponible iPhone
- 13. ¿Cómo obtener la dirección de la puerta de enlace WIFI en el iPhone?
- 14. Uso de SQL para determinar el valor de cidr de una máscara de subred
- 15. iPhone SDK detectar la red Wifi y Carrier
- 16. Calculando todas las direcciones dentro de una subred ... para IPv6
- 17. conecta iPhone a Android Wifi Direct AP suave
- 18. if (máscara y VALOR) o si ((máscara y VALOR) == VALOR)?
- 19. ¿Cómo obtener el prefijo IP mientras tenemos la subred y la dirección IPv4 usando python-netaddr?
- 20. Obtener dirección MAC de Android (no interfaz wifi)
- 21. Ember.js Acción del enrutador al controlador
- 22. máscara promedio y máscara laplaciana en el procesamiento de imágenes
- 23. Notación de subred IP
- 24. ¿hay algún código para la dirección bitwise e ipv6 y la máscara de red (prefijo)?
- 25. Coincidencia de una dirección IP con una tabla de máscaras de subred ... ¿Cuál es el mejor enfoque en Java?
- 26. Buscar dirección IP en iphone
- 27. Python - ip <-> ¿concordancia de subred?
- 28. Obtener la ubicación de wifi ip en android
- 29. Cómo verificar si una dirección IP está dentro de una subred particular
- 30. ¿Cómo consultar las máscaras de subred usando Mono en Linux?
En este momento estoy buscando ICMP (solicitud de enrutador) o ICMP (solicitud de eco, 1 salto, ver quién responde). No creo que mi enrutador responda a las solicitudes ICMP de solicitudes de enrutadores; el segundo método es cómo funciona Traceroute (creo). Otra opción sería una API DHCP (no puede encontrar una en Iphone) o enviar paquetes DHCP para obtener información (porque en mi caso siempre habrá DHCP y el enrutador siempre será el servidor DHCP). – Bill
FYI - La aplicación iPhone está diseñada para controlar las políticas de seguridad/acceso en los enrutadores DLink Home NAT (la interfaz web es difícil de usar); Simplemente trato de evitar que el usuario ingrese la dirección del enrutador. Tendrán que proporcionar una contraseña, así que no hay problema si no puedo encontrar una buena solución aquí. – Bill
@bvanderw: ¿puede publicar un enlace a su código o la documentación para determinar la dirección MAC de la conexión WiFi? No he podido rastrearlo. – Ciaran