クライアントにコンテンツを提供するために、Androidに単純なHTTPサーバーを作成したいと思います。
サーバーの構築方法や既存のライブラリの使用方法に関するアドバイスはありますか?
これを考慮してください: https://github.com/NanoHttpd/nanohttpd 。非常に小さく、Javaで書かれています。問題なく使用しました。
NanoHttpdはAndroidの魅力のように機能します。ユーザーの手の中に、その上に構築されたコードがあります。
このライセンスは、「ウイルス」の影響なしに、NanoHttpdの商用利用を絶対に許可します。
これは、JavaSEと同様に、 ServerSocket を使用して実行できます。このクラスはAndroidで利用可能です。 Android.permission.INTERNET
が必要です。
唯一注意が必要なのは、ServerSocketで別のスレッド待機が必要であり、accept
メソッドからのサブソケットを処理することです。また、必要に応じてこのスレッドを停止および再開する必要があります。最も簡単なアプローチは、ServerSocketを閉じることで待機スレッドを強制終了するようです。アクティビティが一番上にあるときにのみサーバーが必要な場合、ServerSocketスレッドの開始と停止は、アクティビティライフサイクルメソッドにかなりエレガントに結び付けることができます。また、サーバーに複数のユーザーがいる場合は、分岐したスレッドでリクエストを処理することをお勧めします。ユーザーが1人だけの場合、これは必要ない場合があります。
どのIPがリッスンしているサーバーであるかをユーザーに伝える必要がある場合は、 NetworkInterface 。getNetworkInterfaces()、 thisを使用します。 question は余分なトリックを伝えることがあります。
最後に、 here 非常に短く、シンプルで、終了よりも理解しやすい完全な最小Androidサーバーが存在する可能性があります他の回答で推奨されるユーザーアプリケーション。
試すことができる別のサーバー http://tjws.sf.net 、実際には既にAndroid対応バージョンを提供しています。
NanoHttpdは https://github.com/NanoHttpd/nanohttpd に移動しました。リンクを更新する場合があります。
試すことができます Restletエディション Androidの場合:
ソースはRestletからダウンロードできます website :
Kotlinを使用している場合は、これらのライブラリを検討してください。 kotlin言語用にビルドされています。 https://github.com/weeChanc/AndroidHttpServerhttps://github.com/ktorio/ktor
AndroidHttpServerは非常に小さいですが、機能も同様です。
Ktorはとても素敵なライブラリで、使い方も簡単です