2010-04-09 22 views
10

Quiero crear una aplicación que se ejecute en Android y use Raw Sockets. Veo que no hay soporte de socket sin formato en las bibliotecas java.net. * O android.net. *. ¿Son posibles los conectores RAW en Android?Raw Sockets en Android

Respuesta

9

, raw sockets correctos no se admiten en cualquier biblioteca de Java o Android, en parte debido a que (cito de here):

se cree que tal paquete degradaría el modelo de seguridad de Java actual y puede ser difícil implementar en un sistema no operativo (OS) de manera dependiente.

hay bibliotecas 3 ª parte como RockSaw o JSocket, sin embargo, estos requieren la compilación de C o C++, por lo que no están de suerte allí.

Además, creo que necesita acceso de root para usar sockets sin formato.

Entonces, con todo eso, diría que técnicamente es posible, pero no práctico en este momento.

+2

Puede usar el Android NDK para el código C/C++. Eso no ayuda con la restricción de acceso sin embargo. – fadden

+3

Realmente necesito Raw Sockets. El propósito de usar Raw Sockets es que los paquetes se puedan manipular. Quiero escribir una capa PPPoE, que requeriría acceso a los paquetes sin procesar. Realmente necesita ejecutarse al mismo nivel que el cliente VPN integrado. ¿Hay un kit similar a DDK que te permite escribir en el nivel del controlador en Android? – Tingo

+1

@Tingo y Steve: "Creo que necesita acceso de root para usar sockets sin formato": más precisamente, necesita [CAP_NET_RAW capacidad] (http://man7.org/linux/man-pages/man7/packet.7.html), pero sí, a menos que se use administración de privilegios más detallada, eso se reduce a "raíz". – jbm

0

Por lo que yo sé, no es posible en Android. No en java ni en c/C++ por razones de seguridad (supongo), la única solución posible sería mediante algún truco con acceso de root. He estado buscando una forma pero nunca he encontrado nada.