Chciałbym stworzyć prosty serwer HTTP w Androidzie do udostępniania treści klientowi.
Masz jakieś rady dotyczące budowy serwera lub korzystania z istniejącej biblioteki?
Chciałbym stworzyć prosty serwer HTTP w Androidzie do udostępniania treści klientowi.
Masz jakieś rady dotyczące budowy serwera lub korzystania z istniejącej biblioteki?
Odpowiedzi:
Rozważ to: https://github.com/NanoHttpd/nanohttpd . Bardzo mały, napisany w Javie. Użyłem go bez problemu.
NanoHttpd działa jak urok na Androida - mamy kod w produkcji, w rękach użytkowników, który jest na nim zbudowany.
Licencja absolutnie zezwala na komercyjne wykorzystanie NanoHttpd, bez żadnych implikacji „wirusowych”.
Można to zrobić za pomocą ServerSocket , tak samo jak w JavaSE. Ta klasa jest dostępna na Androida. android.permission.INTERNET
jest wymagane.
Jedyną trudniejszą częścią jest to, że potrzebujesz oddzielnego oczekiwania wątku na ServerSocket, obsługującego gniazda podrzędne, które pochodzą z jego accept
metody. W razie potrzeby musisz również zatrzymać i wznowić ten wątek. Najprostsze podejście wydaje się zabijać oczekujący wątek, zamykając ServerSocket. Jeśli potrzebujesz serwera tylko wtedy, gdy Twoja aktywność jest na szczycie, uruchamianie i zatrzymywanie wątku ServerSocket można dość elegancko powiązać z metodami cyklu życia działania. Ponadto, jeśli serwer ma wielu użytkowników, dobrze jest obsługiwać żądania w rozwidlonych wątkach. Jeśli jest tylko jeden użytkownik, może to nie być konieczne.
Jeśli chcesz powiedzieć użytkownikowi, na którym adresie IP nasłuchuje serwer, użyj NetworkInterface .getNetworkInterfaces (), to pytanie może podpowiedzieć dodatkowe sztuczki.
Wreszcie, tutaj jest możliwie pełna minimalny serwer Android, który jest bardzo krótkie, proste i mogą być łatwiejsze do zrozumienia niż gotowych aplikacji użytkownika końcowego, zalecanych w innych odpowiedzi.
Inny serwer, który możesz wypróbować http://tjws.sf.net , w rzeczywistości zapewnia już wersję obsługującą Androida.
Możesz wypróbować wersję Restlet dla Androida:
Źródło można pobrać ze strony Restlet :
Jeśli używasz kotlin, rozważ te biblioteki. Jest zbudowany dla języka kotlin. https://github.com/weeChanc/AndroidHttpServer https://github.com/ktorio/ktor
AndroidHttpServer jest bardzo mały, ale funkcja jest również mniejsza.
Ktor to bardzo fajna biblioteka, a jej użycie jest również proste