Wie erstelle ich einen HTTP-Server in Android? [geschlossen]


116

Ich möchte einen einfachen HTTP-Server in Android erstellen, um einem Client Inhalte bereitzustellen.

Irgendwelche Ratschläge zum Erstellen des Servers oder zum Verwenden einer vorhandenen Bibliothek?


Wenn Sie nur einen Webserver benötigen , können Sie dieses Tutorial lesen : devlper.com/2010/12/… und sein Beispiel: code.google.com/p/krvarma-android-samples/source/browse/… . Sie sind beide sehr alt, aber nach einigen Änderungen wird es immer noch gut funktionieren.
Android-Entwickler

Antworten:


131

Betrachten Sie dieses: https://github.com/NanoHttpd/nanohttpd . Sehr klein, in Java geschrieben. Ich habe es ohne Probleme benutzt.


Tolle. Wahrscheinlich einen Monat Arbeit gespart. Können Sie es in einem kommerziellen Produkt verwenden?
Ivan G.

Sie sollten über Modified BSD License lesen. Ob es die Verwendung von Code in kommerziellen Produkten erlaubt oder nicht.
Damluar

2
Ich kann scheinbar keine Bilder auf meiner HTML-Seite anzeigen lassen. Welches Verzeichnis sollte im HTML-Code verwendet werden, damit Bilder angezeigt werden? Vielen Dank.
Shane Oliver

Der Pfad zu den Bildern ist relativ zur HTML-Seite. Es ist kein Problem von http Server, es ist schlecht HTML ..
Damluar

Kann ich eine Datei bereitstellen, die gerade zum homeDir hinzugefügt wird? Zum Beispiel kopiere ich eine Datei mit dem Namen f1 in homeDir (mit Javacode). Jetzt wird die Datei kopiert und wenn jemand eine Anfrage für die Datei f1 sendet, kann der Server die Anfrage verarbeiten?
Ashwin N Bhanushali

23

NanoHttpd funktioniert wie ein Zauber auf Android - wir haben Code in der Produktion, in den Händen der Benutzer, der darauf aufgebaut ist.

Die Lizenz erlaubt absolut die kommerzielle Nutzung von NanoHttpd ohne "virale" Auswirkungen.


1
Wo finde ich ein Tutorial / Beispiel für die Verwendung? Zum Beispiel, um eine auf dem Gerät befindliche Datei bereitzustellen, damit andere sie herunterladen (oder von ihr streamen) können?
Android-Entwickler

9

Dies kann mit ServerSocket wie unter JavaSE erfolgen. Diese Klasse ist für Android verfügbar. android.permission.INTERNETWird benötigt.

Der einzige schwierigere Teil ist, dass Sie eine separate Thread-Wartezeit auf dem ServerSocket benötigen, um Sub-Sockets zu warten, die von seiner acceptMethode stammen. Sie müssen diesen Thread auch stoppen und nach Bedarf fortsetzen. Der einfachste Ansatz scheint den wartenden Thread durch Schließen des ServerSocket zu beenden. Wenn Sie nur einen Server benötigen, während sich Ihre Aktivität oben befindet, kann das Starten und Stoppen des ServerSocket-Threads recht elegant mit den Methoden des Aktivitätslebenszyklus verknüpft werden. Wenn der Server mehrere Benutzer hat, kann es auch sinnvoll sein, Anforderungen in den gegabelten Threads zu bearbeiten. Wenn nur ein Benutzer vorhanden ist, ist dies möglicherweise nicht erforderlich.

Wenn Sie dem Benutzer mitteilen müssen, auf welcher IP- Adresse der Server lauscht, verwenden Sie NetworkInterface .getNetworkInterfaces (). Diese Frage enthält möglicherweise zusätzliche Tricks.

Schließlich hier gibt es möglicherweise den kompletten minimal Android - Server, der sehr kurz, einfach und kann leichter zu verstehen als fertige Endbenutzer - Anwendungen, in anderen Antworten empfohlen.


6

Ein weiterer Server, den Sie unter http://tjws.sf.net ausprobieren können, bietet tatsächlich bereits eine Android-fähige Version.


1
Dies ist fett für Android-Standards (100kb). Gut, wenn Sie einen seriösen Server in Java möchten, anstatt nur eine einfache Datei bereitzustellen oder eine Remote-Konfigurations- / Debug- / Statusschnittstelle in Ihre App zu integrieren.
Ahcox


Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.