我正在尝试在 MonoTouch 中实现 ping 功能。
由于某些原因,System.Net.NetworkInformation
中的 Ping
类在真实设备上不起作用,因此我决定切换到原始套接字并自己实现 ping。
不幸的是,我在以下位置收到“拒绝访问”消息:
socket = new Socket(AddressFamily.InterNetwork, SocketType.Raw, ProtocolType.Icmp);
知道如何在 monotuch 中执行 ping 操作吗?为什么我不能创建原始套接字?
最佳答案
我没有尝试过原始套接字,但您的访问被拒绝可能意味着它们在 iOS 中受到限制 - 就像它们一样 require UNIX 系统上的 root 权限。这也是为什么在某些情况下无法直接(存在解决方法)的原因相同allow Ping
类在 Linux 系统的 Mono 上工作。
缺少Ping
是known问题,通常可以通过使用 Reachability 来解决 helper 。 Sample代码在 GIT 上可用。
关于iphone - 单点触摸的原始套接字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8282041/