2009-05-08 4 views
5

Je cherche à implémenter une classe Ping dans Cocoa-Touch. D'après le googling que j'ai fait et l'ancien code c que j'ai regardé, il semble que l'utilisation du protocole ICMP est la meilleure solution. Je suppose que ma question est, ICMP est pris en charge dans le SDK iPhone, et si non, y at-il quelque chose dans les classes CoreFoundation Network que je pourrais utiliser à la place? J'ai eu un coup d'œil à CFHost et CFHostStartInfoResolution (hôte, kCFHostReachability, erreur &), mais qui est plus pour vérifier si un hôte existe plutôt que de se le temps de répondre, etc.ICMP et l'iPhone SDK

+0

pouvez-vous trouver une solution de contournement pour cela? – sandy

Répondre

1

Oui, vous pouvez théoriquement le faire. Cependant, la dernière fois que j'ai vérifié que vous aviez besoin d'être exécuté en tant que root pour accéder au socket BSD 'brut' requis pour l'envoi de traces ICMP. C'est vrai sur le Mac, au moins, donc je suppose que c'est la même chose sur l'iPhone.

Vous pouvez jeter un coup d'œil à la structure SystemConfiguration et aux API SCReachability comme alternative. Ils sont tous asynchrones, vous pouvez donc garder une trace du temps nécessaire pour avoir une idée de la latence du réseau.

+0

En fait, ce n'était vrai que jusqu'à OSX 10.2 –

0

Je ne sais pas sur les choses CFNetwork, mais n » N'oubliez pas que vous avez toujours à votre disposition tous les outils habituels de mise en réseau BSD.

+0

Sur l'iPhone aussi? Awesome – JamesSugrue

Questions connexes