【发布时间】:2018-11-16 08:58:30
【问题描述】:
如何在不搜索我连接的所有 IP 地址的情况下检查具有特定 IP 地址的设备是否仍然是我网络的一部分。是否可以直接 ping 连接硬件的 IP 地址?
【问题讨论】:
-
为什么不直接向它响应的设备发送一些东西(即它是否响应 ping?)并查看它是否响应?
标签: ios objective-c ip-address
如何在不搜索我连接的所有 IP 地址的情况下检查具有特定 IP 地址的设备是否仍然是我网络的一部分。是否可以直接 ping 连接硬件的 IP 地址?
【问题讨论】:
标签: ios objective-c ip-address
IP 地址只是一个标识符,即一个数字。使用该号码,您可以尝试访问由您的网络基础设施(如网络路由器)分配给该号码的设备。
你说你有一些
我连接的 IP 地址
如果您已经使用 TCP、HTTP 或任何其他具有长时间运行连接的协议连接到设备的 IP 地址,最简单的方法就是检查该连接是否有效。如果您可以将所有连接存储在哈希表(或地图/字典)中并且搜索会非常快。
如果您没有真正连接,解决此问题的一个好方法是实施 ping/pong(又名ECHO)方案:当您发送包含一些数据的网络数据包(或请求)并期望该数据在合理的时间间隔内回复您。这可以基于ICMP 或您自己的自定义协议。
或者,您可以实施“心跳”方案(或保持活动状态,另请参见:https://serverfault.com/questions/361071/what-is-the-difference-between-keepalive-and-heartbeat、Do I need to heartbeat to keep a TCP connection open?、https://en.wikipedia.org/wiki/HTTP_persistent_connection),其中每个设备都会定期发送“我还活着”数据包为您服务.
【讨论】: