【问题标题】:How Scan devices in a LAN network如何扫描 LAN 网络中的设备
【发布时间】:2013-07-30 23:01:55
【问题描述】:

我想在 LAN 网络中进行扫描以查找链接的设备。 我正在 IOS 中为 IPAD 开发一个应用程序 我该怎么办???

【问题讨论】:

  • MMLanScan 经常崩溃。每当您扫描网络时,它都会崩溃。特别是如果您一次扫描 2-3 次。它会崩溃

标签: ios networking device network-scan


【解决方案1】:

因为这些是移动设备,所以我假设您想在无线网络上查找设备。从理论上讲,由于 wifi 使用共享介质进行通信,您可以被动地侦听流经网络的流量并收集有关客户端的数据,而无需发送任何数据包。这就是通常所说的混杂模式。实际上,网络适配器驱动程序有 99% 的机会只允许您获取发往您的 MAC 地址的流量。在这种情况下,您将需要主动扫描并非 100% 准确的网络子网,并且根据网络的实施方式,可能会被视为攻击。

简单的扫描方法是向子网中的每个 IP 地址发送 ICMP 请求 (ping),并从发回 echo 回复的人那里收集数据。这是不可靠的,因为某些主机即使处于活动状态也不会响应 ICMP 回显请求。您需要做的第一件事是找出您自己的 IP 地址和子网掩码,并计算子网中可能的地址范围。该范围是通过使用逻辑 AND 运算符获得的,其中操作数是您的 IP 地址和子网掩码的二进制值。这是程序中的一个示例,该程序针对具有 255.255.255.0 子网掩码(CIDR 表示法中的 192.168.1.1/24)的典型 192.168.1.1 子网计算此值:

Address:   192.168.1.1           11000000.10101000.00000001 .00000001
Netmask:   255.255.255.0 = 24    11111111.11111111.11111111 .00000000
Wildcard:  0.0.0.255             00000000.00000000.00000000 .11111111

Network:   192.168.1.0/24        11000000.10101000.00000001 .00000000
Broadcast: 192.168.1.255         11000000.10101000.00000001 .11111111
HostMin:   192.168.1.1           11000000.10101000.00000001 .00000001
HostMax:   192.168.1.254         11000000.10101000.00000001 .11111110

然后您将遍历范围并 ping 每个地址。您可以考虑的另一件事是侦听诸如 ARP 之类的广播流量并以这种方式收集一些信息。我不知道您要做什么,但您无法通过这种方式获得很多有用的信息,除了主机网络适配器的供应商。

【讨论】:

  • 嗨,在我的应用程序中,我找到了网络类,例如 192.168.1.xxx。在这个类中(从 192.168.1.0 到 192.168.1.255)我必须找到从路由器分配的所有 IP,然后我想做“ping”来找到它们在网络中的一些服务器设备,但我不知道知识产权
  • 除非您可以访问路由器,否则您无法确定分配了哪些 IP。此外,如果您 p​​ing IP,您只会发现具有该地址的主机是否处于活动状态并响应 ICMP 请求。如果您想在网络上查找特定服务器并且您知道该服务器提供的服务,您可以检查具有某些 IP 的主机是否接受与其所服务的服务类型相对应的特定端口上的连接。如果您成功连接到该端口,则表明您找到了您正在寻找的服务器。
  • 我(通过我的应用程序)连接到路由器,我正在寻找一种简单的方法来扫描连接在同一路由器中的所有设备
  • 当我说“访问路由器”时,我指的是管理访问权限,因此您可以提取 dhcp 租约表。如果没有,最简单的方法就是我上面已经描述的方法。
  • 仅仅因为没有“简单的方法”来进行扫描并不意味着至少不应该对这个好答案投赞成票!
【解决方案2】:

查看我的LAN Scan on Github。它完全符合您的要求。

【讨论】:

  • 是否可以检测设备类型,例如打印机、ios 设备、媒体播放器?
  • 是的,@aparesidam 是可能的。事实上,这就是开发 LAN 扫描的原因。
  • 这真的很棒!!!我想找到设备类型!!!你能帮我解决这个问题吗??
  • 模拟器也能用吗?就我而言,不工作。即使我一直按刷新,它也会显示任何设备。另外,它是否基于 ping 所有设备?并非所有设备都会响应 ping。
  • 不太了解 iOS 或 Swift,我想知道这个库是否也与 OS X 兼容?
【解决方案3】:

Bonjour 自 2002 年以来一直存在,看看吧!

我的意思是,看看他们现在的标语:

Bonjour,也称为零配置网络,可以使用行业标准 IP 协议自动发现本地网络上的设备和服务。 Bonjour 使用可从 Cocoa、Ruby、Python 和其他语言访问的复杂且易于使用的编程接口,让发现、发布和解析网络服务变得容易。

【讨论】:

  • Bonjour 是否还需要在本地设备上运行任何代码?还是开箱即用?
  • @avi 它要求网络上的设备可以通过运行某种代码来发现,但不是您必须制作/维护/启动/安装或诸如此类的代码。它应该只是工作® :)
  • Bonjour 仅在您的路由器支持多播时才有效。
【解决方案4】:

我最近使用了MMLANScan,非常好。它会发现 IP、主机名和 MAC 地址。

【讨论】:

  • 我无法使用 MMLanScan 获取主机名。如何使用这个库获取主机名?
猜你喜欢
  • 1970-01-01
  • 2013-11-06
  • 2014-12-20
  • 1970-01-01
  • 1970-01-01
  • 2015-07-23
  • 2022-11-10
  • 2022-11-22
  • 1970-01-01
相关资源
最近更新 更多