Wie erstelle ich einen HTTP-Server in Android?

Ich möchte einen einfachen HTTP-Server in Android erstellen, um einige Inhalte an einen Client zu senden.

Irgendwelche Ratschläge, wie man den Server baut oder eine vorhandene Bibliothek benutzt?

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 Nutzer, der darauf gebaut ist.

Die Lizenz erlaubt die kommerzielle Nutzung von NanoHttpd, ohne “virale” Implikationen.

NanoHttpd ist nach https://github.com/NanoHttpd/nanohttpd umgezogen. Kann den Link aktualisieren.

Dies kann mit ServerSocket genauso wie mit JavaSE geschehen. Diese class ist für Android verfügbar. android.permission.INTERNET ist erforderlich.

Der einzige schwierigere Teil, Sie brauchen einen separaten Thread warten auf dem ServerSocket, Sub-Sockets, die von seiner Methode accept . Sie müssen diesen Thread bei Bedarf auch anhalten und fortsetzen. Der einfachste Ansatz scheint den wartenden Thread durch Schließen des ServerSockets zu beenden. Wenn Sie nur einen Server benötigen, während Ihre Aktivität oben ist, kann das Starten und Stoppen des ServerSocket-Threads ziemlich elegant mit den Aktivitätslebenszyklusmethoden verknüpft werden. Wenn der Server über mehrere Benutzer verfügt, kann es außerdem sinnvoll sein, Anforderungen in den verzweigten 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 der Server zuhört, verwenden Sie NetworkInterface .getNetworkInterfaces (). Diese Frage kann zu zusätzlichen Tricks führen.

Schließlich gibt es hier möglicherweise den kompletten minimalen Android-Server, der sehr kurz, einfach und möglicherweise einfacher zu verstehen ist als fertige Endanwender-Anwendungen, die in anderen Antworten empfohlen werden.

Ein anderer Server, den Sie http://tjws.sf.net ausprobieren können, ist eigentlich bereits Android-fähige Version.

Sie können versuchen, Restlet Edition für Android:

Die Quelle kann von der Restlet Website heruntergeladen werden :

Wenn Sie Kotlin verwenden, betrachten Sie diese Bibliothek. Es ist für die Kotlin-Sprache gebaut. https://github.com/weeChanc/AndroidHttpServer https://github.com/ktorio/ktor

AndroidHttpServer ist sehr klein, aber das Feature ist weniger.

Ktor ist eine sehr nette Bibliothek, und die Verwendung ist auch einfach