如何使用Flutter扫描本地网络上的所有设备

3
我在使用Flutter应用程序时遇到了问题,我想要获取Android 10及以下版本的同一网络上附近设备的列表。 我正在使用Process.run命令运行此命令:ip neigh show,但是此命令似乎在Android 11及以上版本上被禁止了,因为它总是返回:

无法绑定Netlink套接字:权限被拒绝

并没有返回任何内容。我尝试使用arp-scanner检查它是否有效,幸运的是,它可以工作,但它有一些数据丢失。我需要获取IP地址,MAC地址和主机名,但以前的Flutter插件只返回IP地址,并且始终对MAC地址返回null。

如果有人有关于如何解决这个问题的建议,请帮忙提供。


这里也有同样的问题 https://android.stackexchange.com/questions/248314/ - wittich
1个回答

1
谷歌已经通过SELinux策略从“targetSdkVersion 30”中删除了绑定netlink套接字以检索arp表的可能性。
没有使用bind函数,我制作了一个库来绕过这个问题,方法是通过netlink套接字发送一种未列出的类型消息(30),然后使用套接字接收来查看系统返回给该套接字的数据。从中,我注意到收到的数据是arp表。
我不知道这个库是否适用于Flutter,但你可以尝试一下。
你可以在此处找到更多信息:https://github.com/fulvius31/ip-neigh-sdk30/blob/main/ipneigh30/src/main/cpp/ip_neigh.c

谢谢您的回复,我会去查看一下。但是我有一个问题,您是否会将其转换为Flutter插件? - Sparks

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接