我有两个 Android KitKat手机,两个都是作为Group Owners运行WiFi-Direct组,我们称之为GO1和GO2 我设法将GO1作为传统客户端连接到GO2而不破坏任何(先前设置的)wifi直接组. 问题是,正如您可能知道的
我设法将GO1作为传统客户端连接到GO2而不破坏任何(先前设置的)wifi直接组.
问题是,正如您可能知道的那样,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?
>可以在不使用手机的情况下完成任何此操作吗?
>还有其他建议吗?
**:实际上,因为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接口上启用了IPv6,即使它是,它也可能是一个硬编码的IPv6地址.如果GO1和GO2必须在GO模式下相互连接,那么可能会考虑使用蓝牙或其他传输来允许它们进行通信.如果可以延迟GO1和GO2之间的通信,则缓存要交换的任何信息,并且当一个设备可以是另一个设备的客户端时,可以在这两个设备之间发送它.当GO1可以停止成为GO并且可以成为GO2的客户端时.