更改 WiFi-Direct IP 范围?在 Android WiFi-Direct 中强制使用 IPv6?

2023-12-06

我有两部 Android KitKat 手机,两者都作为组所有者运行 WiFi-Direct 组,我们称它们为 GO1 和 GO2

我设法将 GO1 作为旧客户端连接到 GO2,而没有破坏任何(之前设置的)wifi-direct 组。

问题在于,正如您所知,GO IP 地址在 Android 源代码中被硬编码,并设置为 192.168.49.1

因此,我的两个设备 GO1 和 GO2 都具有相同的 IP 地址 (**)...每个设备都在其本地网络上。

我的应用程序同时是客户端和服务器。但两个网络都使用相同的 IP 范围 (192.168.49.XXX),显然我无法更改。

因此,如果它们都托管 WiFi-Direct 组,我无法在它们之间创建 TCP 连接,因为任何设备在尝试连接到 192.168.49.1 时都会连接到自身

所以问题是:

  • 有没有办法更改 Wifi-Direct 中使用的 IP 范围?
  • 有没有办法在 Wifi-Direct 中使用 IPv6 而不是 IPv4?
  • 这些可以在不root手机的情况下完成吗?
  • 还有其他建议吗?

** :实际上,由于 GO1 作为旧客户端连接到 GO2,因此 GO1 对于 GO2 来说被称为 192.168.49.227(例如),而 GO2 对于 GO1 来说被称为 192.168.49.1。但由于 GO1 也是 GO,因此他的客户(及其本身)也将其称为 192.168.49.1。


无需 root 手机即可解决此问题的一种方法是通过多播 UDP* 发送数据包。这些数据包将从 GO1 发送到 GO2。

这样做有一些副作用:

  • 要将其用于网络,您必须在 OSI 应用程序级别执行封装和路由(效率不高)。

  • 您还需要根据 MA​​C 地址进行路由,因为每个设备都有相同的 192.168.49.1 地址。

  • “值得注意的是,多播套接字封装了一对多单播通信,因此无法充分利用可用的 WiFi 和 WiFi Direct 总带宽”*

还有一点值得注意:

  • 当您扩大 GO 的数量时,您将遇到所有节点都在同一 wifi 通道上运行的问题。对于少数设备来说这不是问题,但是对于数百台设备来说,这将是一个巨大的问题。

*此方法在 Colin Funai、Cristiano Tapparello 和 Wendi Heinzelman 题为“通过 WiFi Direct 多组网络支持多跳设备到设备网络”的论文中提到,可在此处找到:https://arxiv.org/pdf/1601.00028.pdf

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

更改 WiFi-Direct IP 范围?在 Android WiFi-Direct 中强制使用 IPv6? 的相关文章

随机推荐