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?
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?
Antworten:
Betrachten Sie dieses: https://github.com/NanoHttpd/nanohttpd . Sehr klein, in Java geschrieben. Ich habe es ohne Probleme benutzt.
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.
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.
Ein weiterer Server, den Sie unter http://tjws.sf.net ausprobieren können, bietet tatsächlich bereits eine Android-fähige Version.
Sie können Restlet Edition für Android versuchen :
Die Quelle kann von der Restlet- Website heruntergeladen werden :
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