2012.03.28
【Android SDK】HTTPサーバーの基礎を作る
ちょいと気になったので試しに作ってみる。
サンプル
大分乱雑なサンプル。
package jp.nyakki.HttpTest;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.ByteArrayOutputStream;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.PrintStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.net.SocketAddress;
import android.util.Log;
public class TcpHttp extends Thread
{
ServerSocket m_sServer;
Socket m_sClient;
@Override
public void run()
{
try
{
SocketAddress clientAddress;
InputStream in;
OutputStream out;
//ソケット作成
m_sServer = new ServerSocket( 12349 );
Log.d( "nya", "開始");
//クライアントからの接続を待ち受けるループ
while (true)
{
// クライアントの接続を取得
m_sClient = m_sServer.accept();
clientAddress = m_sClient.getRemoteSocketAddress();
Log.d( "nya", "接続中:" + clientAddress);
in = m_sClient.getInputStream();
out = m_sClient.getOutputStream();
InputStreamReader isr;
BufferedReader br;
isr = new InputStreamReader( in );
br = new BufferedReader( isr );
//リクエスト取得
while( true )
{
String szLine = br.readLine();
//空行が着たら終了
if( szLine.length() == 0 )
{
break;
}
Log.d( "nya", szLine );
}
//レスポンス返却
OutputStreamWriter osw;
BufferedWriter bw;
osw = new OutputStreamWriter( out );
bw = new BufferedWriter( osw );
bw.write("HTTP/1.1 200 OK\r\n");
bw.write("Content-Type: text/plain; charset=UTF-8\r\n");
bw.write("\r\n");
bw.write("あいうえお");
bw.flush();
//クライアントとの接続を切る
m_sClient.close();
}
}
catch( Exception e )
{
//エラー処理
ByteArrayOutputStream baos;
PrintStream ps;
baos = new ByteArrayOutputStream();
ps = new PrintStream( baos );
e.printStackTrace(ps);
Log.d("nya", new String( baos.toByteArray() ) );
}
}
}
こんなスレッドをアプリ上で実行しておけばいいらしい。
アプリが起動した状態でブラウザで "http://127.0.0.1:12349/" へアクセスすると表示されるはずです。
基本的にはJavaのTCP処理でHTTPっぽく裁いてあげればよいらしい。
ServerSocketのコンストラクタでポートを決定。
自分のスマホだと結構いろんなところでポートをすでに取られいるのかこのタイミングでエラーとなる。(80や12345とか)
感想
てか、HTTPの基礎ってこんなもんなのですね。
もう少し情報を整備すればApache(藁)も出来るんじゃないかと思ってしまいます。
![]() |
基礎から学ぶ Android SDK 吉井 博史 シーアンドアール研究所 2010-01-25 |








関連記事