Bagaimana cara membuat server HTTP di Android? [Tutup]

116

Saya ingin membuat server HTTP sederhana di Android untuk menyajikan beberapa konten ke klien.

Adakah saran tentang cara membangun server atau menggunakan pustaka yang ada?

biquillo
sumber
jika yang Anda inginkan hanyalah server web, Anda dapat melihat tutorial ini: devlper.com/2010/12/… dan contohnya: code.google.com/p/krvarma-android-samples/source/browse/… . keduanya sangat tua, tetapi setelah beberapa penyesuaian, ini masih akan berfungsi dengan baik.
Pengembang android

Jawaban:

131

Pertimbangkan yang ini: https://github.com/NanoHttpd/nanohttpd . Sangat kecil, ditulis dalam bahasa Jawa. Saya menggunakannya tanpa masalah.

damluar
sumber
Luar biasa. Mungkin menghemat satu bulan kerja. Bisakah Anda menggunakannya dalam produk komersial?
Ivan G.
Anda harus membaca tentang lisensi BSD yang dimodifikasi. Jika memungkinkan menggunakan kode dalam produk komersial atau tidak.
damluar
2
Saya tidak bisa menampilkan gambar di halaman html saya. Direktori apa yang harus digunakan dalam html untuk menampilkan gambar? Terima kasih.
Shane Oliver
path ke gambar relatif mengatur ulang halaman html. itu bukan masalah server http, itu html buruk ..
damluar
Dapatkah saya melayani file yang sedang ditambahkan ke homeDir. Misalnya saya menyalin file bernama f1 di homeDir (menggunakan javacode). Sekarang penyalinan file sedang berlangsung dan jika seseorang mengirim permintaan untuk file f1 Dapatkah server memproses permintaan tersebut?
Ashwin N Bhanushali
23

NanoHttpd bekerja seperti pesona di Android - kami memiliki kode dalam produksi, di tangan pengguna, yang dibuat di atasnya.

Lisensi benar-benar memungkinkan penggunaan komersial NanoHttpd, tanpa implikasi "viral".

Paul Hawke
sumber
1
Di mana saya dapat menemukan tutorial / contoh cara menggunakannya? misalnya untuk melayani file yang terletak di perangkat, sehingga orang lain dapat mendownloadnya (atau streaming darinya)?
Pengembang android
9

Ini bisa dilakukan menggunakan ServerSocket , sama seperti di JavaSE. Kelas ini tersedia di Android. android.permission.INTERNETdiperlukan.

Satu-satunya bagian yang lebih rumit, Anda memerlukan utas terpisah menunggu di ServerSocket, melayani sub-soket yang berasal dari acceptmetodenya. Anda juga perlu menghentikan dan melanjutkan utas ini sesuai kebutuhan. Pendekatan paling sederhana tampaknya mematikan thread yang menunggu dengan menutup ServerSocket. Jika Anda hanya memerlukan server saat aktivitas Anda di atas, memulai dan menghentikan utas ServerSocket bisa dikaitkan dengan elegan ke metode siklus hidup aktivitas. Selain itu, jika server memiliki banyak pengguna, mungkin bagus untuk melayani permintaan di utas bercabang. Jika hanya ada satu pengguna, ini mungkin tidak diperlukan.

Jika Anda perlu memberi tahu pengguna di IP mana server mendengarkan, gunakan NetworkInterface .getNetworkInterfaces (), pertanyaan ini mungkin memberi tahu trik tambahan.

Terakhir, di sini mungkin ada server Android minimal lengkap yang sangat pendek, sederhana dan mungkin lebih mudah dipahami daripada aplikasi pengguna akhir yang sudah jadi, direkomendasikan dalam jawaban lain.

Audrius Meskauskas
sumber
6

Server lain yang bisa Anda coba http://tjws.sf.net , sebenarnya sudah menyediakan versi yang mendukung Android.

Dmitriy R
sumber
1
Ini gemuk menurut standar Android (100kb). Baik jika Anda menginginkan server yang serius di java daripada hanya menyajikan file sederhana atau antarmuka config / debug / status jarak jauh ke dalam aplikasi Anda.
ahcox