我们使用了库SimplePing,但我们的网络扫描程序的多个挑战有时候找不到某些设备。即此扫描仪无法可靠地工作。 为IOS提示另一个库或更可靠的算法?
也许我需要使用套接字编写ping:
socket(AF_INET,SOCK_DGRAM,IPPROTO_ICMP)
但还有什么代码?
答案 0 :(得分:1)
您可以在FreeBSD源代码中看到ping
实用程序的实现:https://svnweb.freebsd.org/base/release/10.1.0/sbin/ping/ping.c?view=markup
不要害怕阅读任何平台的现有实施的源代码,因为它们都使用相同的基础,您的应用也不会例外。
顺便说一下,你可以编译用Objective-C编写的应用程序的C代码。
<强>更新强>
以下是关于如何使用套接字的一个很好的解释:http://www.linuxhowtos.org/C_C++/socket.htm
答案 1 :(得分:1)
并非所有设备都响应ICMP PING(这是您正在使用的)。是否有从未发现的特定设备?如果是这样,他们是否回应“ping”命令?
如果它更不稳定,那么您需要从网络跟踪开始(最常见的是使用wireshark)。您需要确定ping机是否收到ping,并单独确定您的设备是否收到了响应。您通常希望为此构建一个小型专用网络,以便您可以控制硬件。
一般来说,最初在模拟器而不是设备中开发这种代码更容易。它在模拟器中更可靠吗?
您收到错误了吗?是否涉及防火墙? (防火墙通常会吞下ICMP而不会产生错误。)
除了“无法可靠地工作”之外,您还需要更多特定的诊断信息。您需要确切地知道哪些部分有效,哪些无效。你送包了吗?他们收到了包吗?他们发了回复吗?你收到回复了吗?没有这些基本数据,就很难对网络进行故障排除。
答案 2 :(得分:0)
可能会对你有帮助。
它是用于搜索连接网络中的网络服务的示例代码。您可以在搜索域中进行必要的更改,并可以获取已连接网络中的IP地址列表。