안드로이드에 소켓 서버를 만들어서 컴퓨터의 웹 브라우저에서 접근하여 웹 페이지를 볼 수 있게 하려고 합니다.


아주 간단하게 빈 액티비티에서 스레드를 생성하여 어플을 실행하는 동안 소켓통신을 하는 데에는 성공했습니다.


하지만 액티비티에 토글버튼을 만들어 서버를 시작하고 정지하게 만드는 일은 쉽지가 않네요. 방법이 있을까요?


제가 초보라서 그런지 어떻게 해야할지 감이 잘 오지 않네요. 다음은 제 소스입니다.

HTTPServer.javaHTTPServer.java
package com.example.socketserver;
import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.io.OutputStream;import java.io.PrintWriter;import java.net.ServerSocket;import java.net.Socket;
import android.util.Log;
public class HTTPServer implements Runnable {
	public static final int SERVERPORT = 9999;
	private Thread thisThread;
	public void start() {		thisThread = null;		thisThread = new Thread(this);		thisThread.start();	}
	public void stop() {		// 멈추는법	}
	@Override	public void run() {		try {			ServerSocket serverSocket = new ServerSocket(SERVERPORT);			Thread sThread = null;			while (true) {				Socket soc = serverSocket.accept();				sThread = new Thread(new HTTPSession(soc));				sThread.start();			}		} catch (IOException e) {			Log.i("TCP", "S: new ServerSocket Error", e);		}	}
	public class HTTPSession implements Runnable {
		Socket mSock;
		public HTTPSession(Socket soc) {			mSock = soc;		}
		@Override		public void run() {			BufferedReader in = null;			String str = null;
			try {				in = new BufferedReader(new InputStreamReader(						mSock.getInputStream()));				do {					str = in.readLine();					Log.i("TCP", "S: Received: '" + str + "'");				} while (str.trim().length() > 0);			} catch (IOException e) {				Log.i("TCP", "Read Error");				e.printStackTrace();			}
			try {				OutputStream out = mSock.getOutputStream();				PrintWriter pw = new PrintWriter(out);				pw.print("<html><h1>The server is running.</h1></html>");				pw.flush();			} catch (IOException e) {				e.printStackTrace();			}
			try {				mSock.close();			} catch (IOException e) {				e.printStackTrace();			}		}
	}
}