AndroidでHTTPサーバーを作成する方法 [閉まっている]


116

一部のコンテンツをクライアントに提供するために、Androidで単純なHTTPサーバーを作成したいと思います。

サーバーの構築方法や既存のライブラリの使用方法に関するアドバイスはありますか?


必要なのがWebサーバーだけの場合は、このチュートリアルを確認できます:devlper.com/2010/12/…とそのサンプル:code.google.com/p/krvarma-android-samples/source/browse/…。どちらも非常に古くなっていますが、微調整を行っても問題なく動作します。
Android開発者

回答:


131

これを検討してください:https : //github.com/NanoHttpd/nanohttpd。非常に小さく、Javaで書かれています。問題なく使用しました。


すごい。おそらく1か月の作業を節約できました。市販品で使用できますか?
Ivan G.

Modified BSDライセンスについて読む必要があります。商用製品でコードを使用できるかどうか。
damluar 2011

2
HTMLページに画像を表示できないようです。画像を表示するには、htmlでどのディレクトリを使用する必要がありますか?ありがとう。
シェーン・オリバー

画像へのパスは、HTMLページの相対位置です。それは、HTTPサーバーの問題ではない、それは悪いhtmlのだ...
damluar

現在homeDirに追加されているファイルを提供できますか?たとえば、f1という名前のファイルをhomeDirにコピーしています(javacodeを使用)。現在、ファイルのコピーが進行中です。ファイルの送信要求があった場合、f1サーバーはその要求を処理できますか?
Ashwin N Bhanushali 2013年

23

NanoHttpdは、Androidの魅力のように機能します。私たちは、ユーザーの手で、その上に構築されたコードを製品化しています。

ライセンスは、「ウイルス」の影響なしに、NanoHttpdの商用利用を完全に許可します。


1
使い方のチュートリアル/サンプルはどこにありますか?たとえば、デバイスにあるファイルを提供して、他の人がそれをダウンロード(またはそこからストリーミング)できるようにしますか?
Android開発者

9

これは、JavaSEと同じようにServerSocketを使用して実行できます。このクラスはAndroidで使用できます。android.permission.INTERNET必要とされている。

さらにトリッキーな部分は、ServerSocketで別のスレッド待機が必要で、そのacceptメソッドからのサブソケットにサービスを提供することです。また、必要に応じてこのスレッドを停止して再開する必要があります。最も単純なアプローチは、ServerSocketを閉じることによって待機中のスレッドを強制終了するようです。アクティビティが一番上にあるときにのみサーバーが必要な場合は、ServerSocketスレッドの開始と停止をアクティビティライフサイクルメソッドにかなりエレガントに関連付けることができます。また、サーバーに複数のユーザーがいる場合は、フォークされたスレッドでリクエストを処理するとよいでしょう。ユーザーが1人だけの場合、これは不要な場合があります。

サーバーがリッスンしているIPをユーザーに通知する必要がある場合は、NetworkInterface .getNetworkInterfaces()を使用して ください。この質問は、追加のトリックを示す場合があります。

最後に、ここでは、非常に短く簡単で、他の回答で推奨完成し、エンドユーザーアプリケーション、より理解しやすいかもしれ完全な最小限のAndroidサーバは、おそらくそこにあります。


6

別のサーバーでhttp://tjws.sf.netを試すことができますが、実際にはすでにAndroid対応バージョンが提供されています。


1
これは、Android標準(100kb)で太っています。アプリへの単純なファイルサービスやリモートのconfig / debug / statusインターフェースではなく、Javaで本格的なサーバーが必要な場合に適しています。
ahcox


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.