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.
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.
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.
Antworten:
Betrachten Sie dieses: https://github.com/NanoHttpd/nanohttpd . Sehr klein, in Java geschrieben. Ich habe es ohne Probleme benutzt.
quelle
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.
quelle
Dies kann mit ServerSocket wie unter JavaSE erfolgen. Diese Klasse ist für Android verfügbar.
android.permission.INTERNET
Wird 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
accept
Methode 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.
quelle
Ein weiterer Server, den Sie unter http://tjws.sf.net ausprobieren können, bietet tatsächlich bereits eine Android-fähige Version.
quelle
Sie können Restlet Edition für Android versuchen :
Die Quelle kann von der Restlet- Website heruntergeladen werden :
quelle
Wenn Sie Kotlin verwenden, sollten Sie diese Bibliothek berücksichtigen. Es ist für die Kotlin-Sprache gebaut. https://github.com/weeChanc/AndroidHttpServer https://github.com/ktorio/ktor
AndroidHttpServer ist sehr klein, aber die Funktion ist auch weniger.
Ktor ist eine sehr schöne Bibliothek, und die Verwendung ist auch einfach
quelle