我正在创建一个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() );