2011-10-24 7 views
11

Ho un servizio Android che tenta di collegarsi a una porta socket del server 24. Poiché è una porta privilegiata, non riesce con un'eccezione di bind. Mi chiedo cosa devo fare per farlo funzionare. Vedo che questo è stato chiesto un paio di volte in questo forum, ma senza una risoluzione.Come eseguire il binding a una porta inferiore a 1024 in Android?

Questo servizio viene eseguito su un dispositivo che gira su Android. Costruiamo la piattaforma Android per il dispositivo. Abbiamo tutto il controllo di cui abbiamo bisogno.

+1

In base alla conoscenza generale di Linux, solo i processi eseguiti come root possono essere ascoltati sulla porta 24. È possibile eseguire applicazioni Java come root? –

+0

concordato. Il processo deve essere eseguito come root o forse come ID utente con privilegi di amministratore (non sono sicuro se Android supporti tale concetto di Linux). Di solito, se controlli il dispositivo, non stai scrivendo daemon in Java, ma in C/C++, e inizialo usando il normale supporto del daemon Linux. – CommonsWare

+1

Il modo "su ..." di elevare i privilegi non è un'opzione, poiché sono vincolante per una porta. Non sto cercando di generare uno script di shell. Poiché ogni app per Android è fondamentalmente un processo biforcuta da zigote, a meno che zigote elimini i privilegi basati su QUALCOSA, non è possibile legare. Mi chiedo se lo zigote lo consenta o no. Se lo fa, cos'è QUALCOSA? – videoguy

risposta

0

di legarsi a una porta inferiore a 1024, è necessario essere root e ci sono due modi per farlo.

  1. Sistema app: L'applicazione deve essere installata in/system/apps cartella da cui esso deve essere eseguito come root. Tuttavia, vi sono alcuni problemi di firma per cui l'aiuto è available. La distribuzione è anche un problema con le app di sistema.

  2. su binario: la SU binario può essere lanciata con un semplice exec("su -c [command]"). Ma le cose sono più facili a dirsi che a farsi. È necessario eseguire un processo Android non solo un singolo comando. Quindi, c'è libsuperuser che fornisce i metodi e ha una lunghezza totale doc page.

Problemi correlati