年末でJetty(絶対)にできる Android携帯サーバ活用:小山博史のJavaを楽しむ(15)(3/4 ページ)
教育界、技術者コミュニティでJava言語の教育と啓蒙に長年携わってきた筆者が、独自の視点からJavaの面白さを掘り下げていく。(編集部)
Androidサーバアプリの動作確認
Galaxy Tabのエミュレータで
サーバアプリができたら、Androidのエミュレータで実行してみます。ネットワークアプリを開発する場合は、PCとエミュレータの間で通信が必要になるので、若干複雑になります。
PCとエミュレータ間のネットワークが動作していることを確認するためには、次のような手順を踏んで、きちんとサーバがポート待機をしているか確認してからクライアントからアクセスするようにします。また、ddmsコマンドも併用して、ログ出力を見ながら、動作確認をするのもいいでしょう。
- Android SDK and AVD Managerを起動
- Galaxy Tabのエミュレータを起動
- エミュレータで画面のロックをはずす
- AndroidアプリケーションとしてGalaxyTabSimpleServerプログラム起動(ServerSocket.accept()で待機)
- Eclipseのコンソールで「Starting activity sample.server.GalaxyTabSimpleServer on device emulator-5554」といった表示が出るのを確認
6.コマンドプロンプトなどを開いて、使用可能デバイスの接続確認(Android SDKのadbコマンドが実行できるように、PATHを通しておくこと)
C:\> adb devices List of devices attached emulator-5554 device
7.エミュレータのネットワーク状態確認
C:\>adb shell netstat Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 127.0.0.1:5037 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:8080 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:5555 0.0.0.0:* LISTEN tcp 0 0 10.0.2.15:5555 10.0.2.2:56029 ESTABLISHED
8.PCの8080ポートをエミュレータの8080へポートフォワード
C:\>adb forward tcp:8080 tcp:8080
9.PCからTelnet(PuTTYやtelnetコマンド)で接続してデータ送受信
PuTTYを使うなら以下とします。
- [ホスト名]127.0.0.1
- [ポート]8080
- [接続タイプ]Raw
- [終了時のウィンドウクローズ]しない
telnetコマンドを使うなら、以下とします。
telnet:127.0.0.1 8080
作成したプログラムは、単に入力した文字列をエコーするプログラムですから、接続ができたら、文字列を入力してみましょう。1行送信すると、それでsample.server.Echoのプログラムは終了します。
Hello ... 入力した文字列 Hello ... sample.server.Echoが返す文字列
プログラムを終了させるには、ホームボタンなどをクリックして、画面を切り替えます。基本的にサーバは待機状態になっているため、内部的にサーバへ接続して待機状態から復帰させる必要があります。そのうえで待機はせずに停止するようにしています。
Galaxy Tabの実機で
出来上がったプログラムから.apkファイルを生成したら、Galaxy Tabへインストールして動かしてみましょう。Androidだと、自作アプリを気軽に自分の端末へインストールできるので、いろいろ楽しめます。
Galaxy TabのIPを確認したうえで、サーバアプリを起動したら、クライアントとなるPCからtelnetで接続してみましょう。エミュレータで動作させたのと同じように動くことが分かるはずです。
次ページでは、「i-jetty」で持ち運べるAndroid上Webサーバを構築してみます。
Copyright © ITmedia, Inc. All Rights Reserved.