Я хотел бы создать простой HTTP-сервер в Android для обслуживания некоторого контента клиенту.
Есть какие-нибудь советы о том, как собрать сервер или использовать любую существующую библиотеку?
Я хотел бы создать простой HTTP-сервер в Android для обслуживания некоторого контента клиенту.
Есть какие-нибудь советы о том, как собрать сервер или использовать любую существующую библиотеку?
Ответы:
Рассмотрим этот: https://github.com/NanoHttpd/nanohttpd . Очень маленький, написанный на Java. Я использовал его без проблем.
NanoHttpd работает как шарм на Android - у нас есть код в производстве, в руках пользователей, который построен на нем.
Лицензия абсолютно разрешает коммерческое использование NanoHttpd без каких-либо «вирусных» последствий.
Это можно сделать с помощью ServerSocket , как и в JavaSE. Этот класс доступен на Android. android.permission.INTERNET
необходимо.
Единственная более сложная часть, вам нужно отдельное ожидание потока на ServerSocket, обслуживающее подсокеты, которые поступают из его accept
метода. Вам также необходимо остановить и возобновить этот поток по мере необходимости. Самый простой подход - убить ожидающий поток, закрыв ServerSocket. Если вам нужен только сервер, когда ваша активность находится наверху, запуск и остановка потока ServerSocket можно довольно элегантно связать с методами жизненного цикла активности. Кроме того, если на сервере несколько пользователей, может быть полезно обслуживать запросы в разветвленных потоках. Если есть только один пользователь, это может не понадобиться.
Если вам нужно сообщить пользователю, какой IP-адрес прослушивает сервер, используйте NetworkInterface .getNetworkInterfaces (), этот вопрос может дополнительные сведения.
Наконец, здесь, возможно, есть полный минимальный сервер Android, который очень короткий, простой и может быть проще для понимания, чем готовые приложения для конечных пользователей, рекомендованные в других ответах.
Другой сервер вы можете попробовать http://tjws.sf.net , на самом деле он уже предоставляет версию с поддержкой Android.
Вы можете попробовать Restlet edition для Android:
Исходный код можно скачать с сайта Restlet :
Если вы используете kotlin, подумайте об этой библиотеке. Он построен для языка котлин. https://github.com/weeChanc/AndroidHttpServer https://github.com/ktorio/ktor
AndroidHttpServer очень маленький, но и функции меньше.
Ktor - очень хорошая библиотека, и использование тоже простое