2009-05-08 14 views
5

Estoy buscando implementar una clase Ping en Cocoa-Touch. Desde Google y el código c que he analizado, parece que usar el protocolo ICMP es la mejor manera de hacerlo.ICMP y el iPhone SDK

Supongo que mi pregunta es si ICMP es compatible con el SDK de iPhone, y si no, ¿hay algo en las clases de la red de CoreFoundation que pueda usar en su lugar? He echado un vistazo a CFHost y CFHostStartInfoResolution (host, kCFHostReachability, & de error), pero que es más para comprobar si existe una gran cantidad en vez de sacar el tiempo para responder, etc.

+0

¿puede encontrar alguna solución para esto? – sandy

Respuesta

1

Sí, puede hacerlo teóricamente. Sin embargo, la última vez que verifiqué que era necesario ejecutar como root para obtener acceso al socket BSD "en bruto" requerido para enviar trazas ICMP. Esto es cierto en Mac, al menos, así que supongo que es lo mismo en el iPhone.

Es posible que desee echar un vistazo a la estructura SystemConfiguration y las API de SCReachability como una alternativa. Todos estos son asíncronos, por lo que puede realizar un seguimiento del tiempo que lleva tomar una idea de la latencia de la red.

+0

En realidad, esto solo fue cierto hasta OSX 10.2 –

0

No estoy seguro sobre la materia CFNetwork, pero don' No olvide que todavía tiene todas las cosas de redes BSD habituales a su disposición.

+0

¿En el iPhone también? Impresionante – JamesSugrue