2011-06-13 20 views
92

Me gustaría crear un servidor HTTP simple en Android para servir algún contenido a un cliente.¿Cómo crear un servidor HTTP en Android?

¿Algún consejo sobre cómo construir el servidor o utilizar una biblioteca existente?

+0

si todo lo que quiere es un servidor web, puede ver este tutorial: http://www.devlper.com/2010/12/a-bare-minimum-web-server-for-android-platform/ y su muestra: https://code.google.com/p/krvarma-android-samples/source/browse/#svn%2Ftrunk%2Faws. ambos son muy viejos, pero después de algunas modificaciones funcionará bien. –

Respuesta

100

Considere esto: https://github.com/NanoHttpd/nanohttpd. Muy pequeño, escrito en Java. Lo usé sin ningún problema.

+0

super simple de usar! ¡Muchas gracias! – biquillo

+0

Increíble. Probablemente ahorró un mes de trabajo. ¿Puedes usarlo en un producto comercial? –

+0

Deberías leer sobre la licencia BSD modificada. Si permite usar código en producto comercial o no. – damluar

5

Otro servidor puede probar http://tjws.sf.net, en realidad ya proporciona la versión habilitada para Android.

+1

Esto es gordo según los estándares de Android (100kb). Es bueno si quieres un servidor serio en Java en lugar de una simple aplicación de archivos o una configuración remota/interfaz de depuración/estado en tu aplicación. – ahcox

5

NanoHttpd se ha trasladado a https://github.com/NanoHttpd/nanohttpd. puede actualizar el enlace.

+0

Si bien este enlace puede responder a la pregunta, es mejor incluir las partes esenciales de la respuesta aquí y proporcionar el enlace de referencia. Las respuestas de solo enlace pueden dejar de ser válidas si la página vinculada cambia. - [De la crítica] (/ review/low-quality-posts/17735365) –

17

NanoHttpd funciona como un encanto en Android: tenemos un código en producción, en manos de los usuarios, basado en él.

La licencia permite absolutamente el uso comercial de NanoHttpd, sin ninguna implicación "viral".

+1

¿Dónde puedo encontrar un tutorial/muestra de cómo usarlo? por ejemplo, para servir un archivo ubicado en el dispositivo, para que otros puedan descargarlo (o transmitir desde él)? –

4

Esto se puede hacer utilizando ServerSocket, lo mismo que en JavaSE. Esta clase está disponible en Android. android.permission.INTERNET es obligatorio.

La única parte más complicada es que necesita una espera de subprocesos separada en ServerSocket, que atiende sub-sockets que provienen de su método accept. También debe detener y reanudar este hilo según sea necesario. El enfoque más simple parece matar el hilo de espera al cerrar ServerSocket. Si solo necesita un servidor mientras su actividad está en la parte superior, iniciar y detener el hilo ServerSocket puede relacionarse elegantemente con los métodos del ciclo de vida de la actividad. Además, si el servidor tiene múltiples usuarios, puede ser útil atender las solicitudes en los hilos bifurcados. Si solo hay un usuario, esto puede no ser necesario.

Si necesita decirle al usuario en qué IP está escuchando el servidor, use NetworkInterface .getNetworkInterfaces(), this question puede contar trucos adicionales.

Finalmente, here es posiblemente el servidor Android mínimo completo que es muy corto, simple y puede ser más fácil de entender que las aplicaciones de usuario final, recomendado en otras respuestas.

Cuestiones relacionadas