我正在创建一个 Android VPN 应用程序,每当我尝试将入站多播数据包传送到测试应用程序时,我都会遇到困难。当我的 VPN 应用程序将入站多播 IP 数据包(IP 标头的目标地址字段具有多播范围内的地址)写入 TUN 设备的文件描述符端时,我没有看到数据包出现在测试应用程序上用于接收多播数据包。但是,我确实看到测试应用程序正在接收单播数据包。我还看到我的测试应用程序在 VPN 应用程序不在混合中时接收多播数据包,所以我知道它能够接收多播数据。
我怀疑我的 VPN 应用程序创建的 TUN 设备默认不启用多播功能,我还没有找到 Android 公开的任何方法来这样做。有谁知道是否可以为 TUN 设备启用多播?或者,我可能完全错过了其他东西吗?
我使用以下代码使用 VpnService.Builder 类创建 TUN 设备
Builder builder = new Builder();
builder.setMtu( 1250 );
builder.addAddress( "2.3.1.1", 32 );
我使用以下代码创建文件描述符以将 IP 数据包发送到 TUN 设备
ParcelFileDescriptor parcelFileDescriptor = builder.setSession( "my_session" ).setConfigureIntent( myConfigureIntent ).establish();
FileOutputStream tunOut = new FileOutputStream( parcelFileDescriptor.getFileDescriptor() );