2010-04-09 14 views
10

Voglio creare un'applicazione che funziona su Android e utilizza Raw Sockets. Vedo che non esiste alcun supporto raw socket nelle librerie java.net. * O android.net. *. Sono disponibili socket grezzi su Android?Socket raw su Android

risposta

9

corrette, prese prime non sono supportati in tutte le librerie Java o Android, in parte perché (cito a here):

si ritiene che un tale pacchetto sarebbe degradare l'attuale modello di sicurezza di Java e potrebbe essere difficile implementare in un modo non operativo del sistema operativo (SO).

ci sono 3rd librerie di parti come RockSaw o JSocket, tuttavia questi richiedono la compilazione di C o C++, così si sono fuori di fortuna lì.

Inoltre, credo che sia necessario l'accesso come root per utilizzare socket raw.

Quindi, con tutto ciò, direi che tecnicamente è possibile, ma non pratico in questo momento.

+2

È possibile utilizzare Android NDK per codice C/C++. Ciò non aiuta comunque la restrizione di accesso. – fadden

+3

In realtà ho bisogno di Raw Sockets. Lo scopo dell'utilizzo di Raw Sockets è che i pacchetti possano essere manipolati. Voglio scrivere un layer PPPoE, che richiederebbe l'accesso ai pacchetti grezzi. Ha davvero bisogno di essere eseguito allo stesso livello del client VPN integrato. C'è un kit simile a DDK che ti consente di scrivere a livello di driver su Android? – Tingo

+1

@Tingo e Steve: "Credo che sia necessario l'accesso come root per utilizzare socket raw": più precisamente, è necessario [CAP_NET_RAW capability] (http://man7.org/linux/man-pages/man7/packet.7.html), ma sì, a meno che non venga utilizzata la gestione dei privilegi a grana fine, che si riduce a "root". – jbm

0

Per quanto ne so non è possibile su Android. Non in java né c/C++ per motivi di sicurezza (immagino), l'unica soluzione possibile sarebbe attraverso qualche hack con accesso root. Ho cercato anche un modo, ma non ho mai trovato nulla.