单点触摸的原始套接字
问题描述:
我试图在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系统上工作。
缺乏Ping
是known问题,可以一般围绕使用Reachability助手工作。 GIT上提供代码Sample。
答
您可以使用SimplePing的Xamarin.iOS/MonoTouch绑定(Apple称其可在iOS上使用)。
https://github.com/theonlylawislove/MonoTouch.SimplePing
检查测试项目演示使用。适用于模拟器和设备。
是的,我明白你可以检查可达性类的主机的可达性,但它缺少获得响应时间等功能,将继续寻找周围,希望找到解决方案 –