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に以下の二行を設定
[xml]
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission>
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
[/xml]
次に,メインアクティビティーに移ります.
サーバを起動するには,NanoHTTPDを継承したクラスを作成し,それを呼び出します.
今回はWebServerクラスを作成します.
では,まずWebServerを呼び出す処理を
[java]try {
WebServer wb =new WebServer();
wb.start();
} catch (IOException e) {
}
[/java]
これで呼び出します.
そしてWebServerのクラスについて下に書きます
[java]
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);
}
[/java]
これでポート番号8080を開放しています
自分の端末で,このサイトを見るには
webブラウザにて,127.0.0.1:8080を入力すれば
Webサイトを見ることができます.
表示するHTMLは,どこに記述されているかというと
変数msg01にて記述しています
これをretrunすれば,Webサイトを見ることができます.
returnは最後に書いてある
[java]
return newFixedLengthResponse(msg01);
[/java]
にて宣言しています
こんなに簡単にwebサーバが,構築できるんだから
今の技術というのはすごいものですね….
ちなみにWi-Fi Directを利用すると,接続しているグループ端末が
192.168.49.1:「ポート番号」をWebブラウザで入力すればアクセスできます.
いろいろ拡張できるみたいなので興味ある方は是非
では,最後に今回のソースコードを全て載せておきます
[java]
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);
}
}
}
[/java]
ディスカッション
コメント一覧
まだ、コメントがありません