Android'de HTTP sunucusu nasıl oluşturulur? [kapalı]


116

Bir istemciye bazı içerikleri sunmak için Android'de basit bir HTTP sunucusu oluşturmak istiyorum.

Sunucunun nasıl kurulacağına veya mevcut herhangi bir kitaplığın nasıl kullanılacağına dair herhangi bir tavsiye?


tek istediğiniz bir web sunucusu ise, bu eğiticiye göz atabilirsiniz: devlper.com/2010/12/… ve bunun örneğine: code.google.com/p/krvarma-android-samples/source/browse/… . ikisi de çok eskidir, ancak bazı ince ayarlardan sonra hala iyi çalışacaktır.
android geliştiricisi

Yanıtlar:


131

Şunu düşünün: https://github.com/NanoHttpd/nanohttpd . Java ile yazılmış çok küçük. Sorunsuz kullandım.


İnanılmaz. Muhtemelen bir aylık çalışma kurtardı. Ticari bir üründe kullanabilir misin?
Ivan G.

Değiştirilmiş BSD lisansı hakkında bilgi almalısınız. Ticari üründe kod kullanımına izin verip vermediği.
damluar

2
HTML sayfamda resimlerin görüntülenmesini sağlayamıyorum. Görüntülerin gösterilmesi için html'de hangi dizin kullanılmalıdır? Teşekkürler.
Shane Oliver

görüntülere giden yol, html sayfasının yeniden yüklenmesi ile ilgilidir. bu bir http sunucusu sorunu değil, kötü html ..
damluar

Şu anda homeDir'e eklenen bir dosyayı sunabilir miyim? Örneğin, homeDir'de f1 adlı bir dosyayı kopyalıyorum (javacode kullanarak). Şimdi dosya kopyalama işlemi devam ediyor ve biri f1 dosyası için istek gönderirse Sunucu isteği işleyebilir mi?
Ashwin N Bhanushali

23

NanoHttpd, Android'de bir cazibe gibi çalışır - üretimde koda sahibiz, kullanıcıların ellerinde, bunun üzerine kurulu.

Lisans, NanoHttpd'nin herhangi bir "viral" etki olmaksızın ticari kullanımına kesinlikle izin verir.


1
Nasıl kullanılacağına dair bir öğretici / örneği nerede bulabilirim? örneğin, cihazda bulunan bir dosyayı başkalarının indirebilmesi (veya ondan akış yapabilmesi) için sunmak için?
android geliştiricisi

9

Bu, JavaSE'de olduğu gibi ServerSocket kullanılarak yapılabilir . Bu sınıf Android'de mevcuttur. android.permission.INTERNETgerekli.

Tek daha zor kısım, acceptyönteminden gelen alt soketlere hizmet veren ServerSocket üzerinde ayrı bir iş parçacığı beklemesine ihtiyacınız var . Ayrıca gerektiğinde bu konuyu durdurmanız ve devam ettirmeniz gerekir. En basit yaklaşım, ServerSocket'i kapatarak bekleyen iş parçacığını öldürüyor gibi görünüyor. Yalnızca etkinliğiniz en üstteyken bir sunucuya ihtiyacınız varsa, ServerSocket iş parçacığını başlatmak ve durdurmak, etkinlik yaşam döngüsü yöntemlerine oldukça zarif bir şekilde bağlanabilir. Ayrıca, sunucunun birden fazla kullanıcısı varsa, isteklere çatallı evrelerde hizmet vermek iyi olabilir. Yalnızca bir kullanıcı varsa, bu gerekli olmayabilir.

Kullanıcıya hangi IP'nin sunucu dinlediğini söylemeniz gerekiyorsa, NetworkInterface .getNetworkInterfaces () kullanın , bu soru fazladan hileler söyleyebilir.

Son olarak, burada muhtemelen çok kısa, basit ve diğer yanıtlarda önerilen bitmiş son kullanıcı uygulamalarından daha anlaşılması daha kolay olabilecek eksiksiz bir minimal Android sunucusu vardır.


6

Http: //tjws.sf.net'i deneyebileceğiniz başka bir sunucu , aslında zaten Android destekli sürümü sağlıyor.


1
Bu, Android standartlarına (100 kb) göre büyüktür. Basit bir dosya sunumu veya uygulamanıza uzaktan yapılandırma / hata ayıklama / durum arayüzü yerine java'da ciddi bir sunucu istiyorsanız iyi olur.
ahcox


Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.