单点触摸的原始套接字

单点触摸的原始套接字

问题描述:

我试图在MonoTouch中实现ping功能。 由于某些原因,Ping类从System.Net.NetworkInformation不能在真实设备上工作,所以我决定切换到原始套接字并自己实现ping。 不幸的是,我收到“访问被拒绝”的消息上:单点触摸的原始套接字

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

任何想法如何能PING在MonoTouch中做什么?为什么我不能创建原始套接字?

我还没有尝试过原始套接字,但你的拒绝访问可能意味着他们在iOS的限制 - 就像他们require UNIX系统上获得特权。这就是为什么在某些情况下,不可能直接使用(解决方法存在)allowPing类在Mono for Linux系统上工作。

缺乏Pingknown问题,可以一般围绕使用Reachability助手工作。 GIT上提供代码Sample

+0

是的,我明白你可以检查可达性类的主机的可达性,但它缺少获得响应时间等功能,将继续寻找周围,希望找到解决方案 –

您可以使用SimplePing的Xamarin.iOS/MonoTouch绑定(Apple称其可在iOS上使用)。

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

检查测试项目演示使用。适用于模拟器和设备。