Android VpnService proteger socket que se almacena en código nativo?
Estoy escribiendo una aplicación VPN y el socket utilizado para la conexión VPN se maneja en mi código C nativo, no en java. ¿Cómo uso VpnService.protect()
en ese zócalo? Me di cuenta de que tiene una VpnService.protect(int)
, ¿podría devolver el int que socket
devuelve desde el código nativo a Java y proteger de esa manera?
Ejemplo
- Cómo desbloquear InputStream.read () en Android?
- Socket Android: java.net.SocketException: No hay ruta para alojar
- Java socket IOException - permiso denegado
- Mensajes de error NetlinkListener y NetlinkEvent
- Reenvío de puertos Android
// Native Code int socket; JNIEXPORT jint JNICALL Java_com_my_package_Class_initializeSocket ( JNIEnv *env, jobject jobj ) { socket = socket(AF_INET, SOCK_DGRAM, 0); // . . . Handler other socket preparations return (jint)socket; }
// Java Code public native int initializeSocket(); . . . int socket = initializeSocket(); this.protect(socket);
Editar
Encontré esta pregunta que describe cómo funciona la función de protect
, y parece que podría tener una implementación bastante sencilla en C, ya que parece que está usando una llamada setsockopt
. Pero también soy relativamente nuevo en C, así que no puedo seguir cómo replicarlo.
- Recibe UDP en Android Marshmallow
- Comunicación entre dos aplicaciones usando emulador como servidor y cliente
- Llegar a un dispositivo de red por IP y puerto mediante el emulador de Android
- InputStream no recibe EOF
- Servicio de Android para sockets TCP
- Audio de la corriente del androide al servidor
- Socket para servidor Android
- ¿Cómo puede mi aplicación Android comunicarse con un daemon nativo?
Simplemente quería verificar que mis procesos eran válidos, después de completar más pruebas he verificado que funciona.
Ejemplo
// Native Code int socket; JNIEXPORT jint JNICALL Java_com_my_package_Class_initializeSocket ( JNIEnv *env, jobject jobj ) { socket = socket(AF_INET, SOCK_DGRAM, 0); // . . . Handler other socket preparations return (jint)socket; }
// Java Code public native int initializeSocket(); . . . int socket = initializeSocket(); this.protect(socket);
- La aplicación publicada no se actualiza en la tienda de juegos
- Restauración de la aplicación Unity3d de Android con otra actividad en la parte superior