Android端末をwebサーバにできるNanoHTTPDを使ってみよう!
Android端末を、Webサーバとして簡単に組み込むことができる
NanoHTTPDという機能があります.
この子がなかなか優秀で、javaファイルを一つ取り込むだけで
AndroidをWebサーバにできるイカす子なんですね.
てなわけで今回は、そのNanoHTPPDを利用して
Android端末にwebサーバを構築する手順をお伝えしましょう!
ちなみにソースコードをブログに乗せる方法は、別記事に載せてあります。
- まずGithubにてNanoHTTPDにアクセス
- ダウンロードしましょう
- nanohttpd/core/src/main/java/org/nanohttpd/protocols/http/にあるNanoHTTPDを自分のプロジェクトのメインアクティビティーと同じ場所に入れよう
とりあえずこれで準備はできました.
次にAndroidManifest.xmlに以下の二行を設定
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission> <uses-permission android:name="android.permission.INTERNET"></uses-permission>
次に,メインアクティビティーに移ります.
サーバを起動するには,NanoHTTPDを継承したクラスを作成し,それを呼び出します.
今回はWebServerクラスを作成します.
では,まずWebServerを呼び出す処理を
try { WebServer wb =new WebServer(); wb.start(); } catch (IOException e) { }
これで呼び出します.
そしてWebServerのクラスについて下に書きます
private class WebServer extends NanoHTTPD { public WebServer() throws IOException { super(8080); } @Override public Response serve(IHTTPSession session) { Log.d("NanoHttod", "起動したよ!"); String msg01="<!DOCTYPE html>\n" + "<html lang=\"ja\">\n" + "<head>\n" + "<meta charset=\"UTF-8\">\n" + "<title>サイトのタイトル</title>\n" + "</head>\n" + "<body>\n" + " \n" + "//ここにサイトに表示するコンテンツ内容を記述\n" + " \n" + "</body>\n" + "</html>\n"; return newFixedLengthResponse(msg01); } } [java] これでWebサーバが完成しました! まず、ポート番号の指定について下に具体的に書きます [java] public WebServer() throws IOException { super(8080); }
これでポート番号8080を開放しています
自分の端末で,このサイトを見るには
webブラウザにて,127.0.0.1:8080を入力すれば
Webサイトを見ることができます.
表示するHTMLは,どこに記述されているかというと
変数msg01にて記述しています
これをretrunすれば,Webサイトを見ることができます.
returnは最後に書いてある
return newFixedLengthResponse(msg01);
にて宣言しています
こんなに簡単にwebサーバが,構築できるんだから
今の技術というのはすごいものですね....
ちなみにWi-Fi Directを利用すると,接続しているグループ端末が
192.168.49.1:「ポート番号」をWebブラウザで入力すればアクセスできます.
いろいろ拡張できるみたいなので興味ある方は是非
では,最後に今回のソースコードを全て載せておきます
import android.support.v7.app.AlertDialog; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.util.Log; import java.io.IOException; public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); new AlertDialog.Builder(MainActivity.this) .setTitle("NanoHttpd") .setMessage("起動しました") .setPositiveButton("OK", null) .show(); try { WebServer wb =new WebServer(); wb.start(); } catch (IOException e) { } } private class WebServer extends NanoHTTPD { public WebServer() throws IOException { super(8080); } @Override public Response serve(IHTTPSession session) { Log.d("NanoHttod", "起動したよ!"); String msg01="<!DOCTYPE html>\n" + "<html lang=\"ja\">\n" + "<head>\n" + "<meta charset=\"UTF-8\">\n" + "<title>サイトのタイトル</title>\n" + "</head>\n" + "<body>\n" + " \n" + "//ここにサイトに表示するコンテンツ内容を記述\n" + " \n" + "</body>\n" + "</html>\n"; return newFixedLengthResponse(msg01); } } }
ディスカッション
コメント一覧
まだ、コメントがありません