Як створити HTTP-сервер в Android? [зачинено]


116

Я хотів би створити простий сервер HTTP в Android для обслуговування певного вмісту клієнту.

Будь-які поради щодо створення сервера або використання будь-якої існуючої бібліотеки?


якщо все, що вам потрібно, - це веб-сервер, ви можете ознайомитися з цим підручником: devlper.com/2010/12/… та його зразком: code.google.com/p/krvarma-android-samples/source/browse/… . вони обоє дуже старі, але після деяких перетворень все одно буде добре.
андроїд розробник

Відповіді:


131

Розглянемо це: https://github.com/NanoHttpd/nanohttpd . Дуже маленький, написаний на Java. Я ним користувався без жодних проблем.


Дивовижний. Напевно, врятували місяць роботи. Чи можете ви використовувати його в комерційному продукті?
Іван Григорович

Ви повинні прочитати про модифіковану ліцензію BSD. Якщо це дозволяє використовувати код у комерційному продукті чи ні.
damluar

2
Я не можу зробити так, щоб зображення відображалися на моїй html-сторінці. Який каталог слід використовувати в html для показу зображень? Дякую.
Шейн Олівер

шлях до зображень є відносним перезавантаженням сторінки HTML. це не проблема http-сервера, це погано html ..
damluar

Чи можу я подати файл, який наразі додається до homeDir. Наприклад, я копіюю файл з іменем f1 в homeDir (використовуючи javacode). Тепер копіювання файлів триває, і якщо якийсь один запит на надсилання файлу f1 Чи може сервер обробляти запит?
Ешвін Н Бханушалі

23

NanoHttpd працює як принадність на Android - у нас є код у виробництві, в руках користувачів, він створений на цьому.

Ліцензія абсолютно дозволяє комерційне використання NanoHttpd, без будь-яких "вірусних" наслідків.


1
Де я можу знайти підручник / зразок того, як ним користуватися? наприклад, щоб обслуговувати файл, розташований на пристрої, щоб інші могли завантажити його (або передати з нього)?
андроїд розробник

9

Це можна зробити за допомогою ServerSocket , як у JavaSE. Цей клас доступний на Android. android.permission.INTERNETнеобхідно.

Єдина більш складна частина, вам потрібно окремо зачекати потік на ServerSocket, обслуговуючи підрозетки, що виходять з його acceptметоду. Вам також потрібно зупинити та відновити цю нитку за потребою. Найпростіший підхід, здається, вбиває нитку очікування, закриваючи ServerSocket. Якщо вам потрібен сервер лише тоді, коли ваша активність знаходиться на вершині, запуск та зупинка потоку ServerSocket може бути досить елегантно прив’язана до методів життєвого циклу діяльності. Крім того, якщо на сервері є кілька користувачів, може бути корисним обслуговування сервісних запитів у роздвоєних потоках. Якщо є лише один користувач, це може не бути необхідним.

Якщо вам потрібно повідомити користувачеві, на якому IP- адресі прослуховується сервер, використовуйте NetworkInterface .getNetworkInterfaces (), це питання може підказати додаткові хитрощі.

Нарешті, тут , можливо, є повний мінімальний сервер для Android, який дуже короткий, простий і може бути простішим для розуміння, ніж готові додатки для кінцевих користувачів, рекомендовані в інших відповідях.


6

Інший сервер, на якому ви можете спробувати http://tjws.sf.net , насправді він вже пропонує версію для Android.


1
Це жир за стандартами Android (100 кб). Добре, якщо ви хочете серйозний сервер в Java, а не просто просте обслуговування файлів або віддалений інтерфейс config / debug / status у вашому додатку.
ahcox


Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.