2009-05-08 13 views
5

Sto cercando di implementare una classe Ping in Cocoa-Touch. Dal googlare che ho fatto e dal vecchio codice c che ho visto, sembra che usare il protocollo ICMP sia il modo migliore per andare.ICMP e iPhone SDK

Credo che la mia domanda sia, ICMP è supportato nell'SDK di iPhone e, in caso contrario, c'è qualcosa nelle classi della rete CoreFoundation che potrei usare invece? Ho dato un'occhiata al CFHost e CFHostStartInfoResolution (host, kCFHostReachability, & errore), ma che è più di verificare se un host esiste, piuttosto che ottenere il tempo di rispondere, ecc

+0

Sei in grado di trovare una soluzione alternativa per questo? – sandy

risposta

1

Sì, è teoricamente possibile farlo. Tuttavia, l'ultima volta che ho controllato era necessario essere in esecuzione come root per ottenere l'accesso al socket BSD "raw" richiesto per l'invio di tracce ICMP. Questo è vero per Mac, almeno, quindi presumo che sia lo stesso su iPhone.

Si consiglia di dare un'occhiata al framework SystemConfiguration e alle API di SCReachability in alternativa. Sono tutti asincroni, quindi è possibile tenere traccia del tempo necessario per avere un'idea della latenza della rete.

+0

In realtà, questo era vero soltanto fino a OSX 10.2 –

0

Non sono sicuro circa la roba CFNetwork, ma don' t dimenticare che hai ancora tutte le solite cose di networking BSD a tua disposizione.

+0

Anche sull'iPhone? Impressionante – JamesSugrue