Сырые розетки в одноцветном - PullRequest
1 голос
/ 27 ноября 2011

Я пытаюсь реализовать функцию ping в MonoTouch. по некоторым причинам класс Ping из System.Net.NetworkInformation не работает на реальном устройстве, поэтому я решил переключиться на необработанные сокеты и самостоятельно реализовать ping. К сожалению, я получаю сообщение «Отказано в доступе»:

socket = new Socket(AddressFamily.InterNetwork, SocketType.Raw, ProtocolType.Icmp);

Есть идеи, как можно сделать пинг в монотуше? И почему я не могу создать необработанные сокеты?

Ответы [ 2 ]

1 голос
/ 27 ноября 2011

Я не пробовал необработанный сокет, но ваш Доступ запрещен вероятно означает, что они ограничены в iOS - точно так же, как им требуется root привилегия в системе UNIX.По этой же причине в некоторых случаях было невозможно напрямую (обходной путь существует) позволить классу Ping работать в Mono для систем Linux.

Отсутствие Ping - это известная проблема , и обычно можно обойти, используя помощник Reachability . Образец код доступен в GIT.

0 голосов
/ 30 октября 2013

Вы можете использовать привязки Xamarin.iOS / MonoTouch SimplePing (которые, по словам Apple, работают на iOS).

https://github.com/theonlylawislove/MonoTouch.SimplePing

Проверьте тестовый проект на предмет использования демо.Работает на симуляторе и устройстве.

...