我有两部 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 时都会连接到自身
所以问题是:
** :实际上,因为 GO1 作为旧客户端连接到 GO2,所以 GO1 被称为 192.168.49.227(例如)到 GO2,而 GO2 被称为 192.168.49.1 到 GO1。但是因为 GO1 也是一个 GO,它也被他的客户(和它自己)称为 192.168.49.1。
最佳答案
无法更改 IP 范围,因为正如您正确指出的那样,它是在 Android Wi-Fi Direct 系统服务中硬编码的。就我个人而言,我不知道在 Wi-Fi P2P 接口(interface)上启用了 IPv6,即使启用了,它也可能是一个硬编码的 IPv6 地址。
如果 GO1 和 GO2 必须在两者都处于 GO 模式时相互连接,那么也许可以考虑使用蓝牙或其他一些传输方式来允许它们进行通信。如果 GO1 和 GO2 之间的通信可以延迟,则缓存要交换的任何信息,并在这两个设备之间发送它,当一个可以成为另一个的客户端时,例如当 GO1 可以不再是 GO 并且可以成为 GO2 的客户时。
关于android - 更改 WiFi-Direct IP 范围?在 Android WiFi-Direct 中强制使用 IPv6?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36867687/