package com.what21.httpserver.io;
import java.io.IOException;
import java.net.ServerSocket;
public class MyHttpServer {
/**
* @param tcpPort
*/
public static void startServer(int tcpPort) {
try{
final ServerSocket server = new ServerSocket(tcpPort);
Thread t = new Thread(new Runnable() {
public void run() {
try {
while (true){
new MyHandler(server.accept()).start();
}
} catch (IOException e) {
}
}
});
t.start();
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* @param args
* @throws Exception
*/
public static void main(String args[]) throws Exception {
startServer(8000);
}
}
package com.what21.httpserver.io;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintStream;
import java.net.Socket;
public class MyHandler extends Thread {
private Socket client;
public MyHandler(Socket client) {
this.client = client;
}
@Override
public void run() {
try {
//==============================请求处理开始==============================
// 输入流
InputStreamReader input = new InputStreamReader(client.getInputStream());
BufferedReader reader = new BufferedReader(input);
// 读取请求内容,并打印
String info = null;
while ((info = reader.readLine()) != null) {
System.out.println(info);
if (info.equals("")) {
break;
}
}
//==============================响应处理开始==============================
// 输出流
PrintStream out = new PrintStream(client.getOutputStream());
String html = "
HI~ , My HTTP Server!
";// 响应头
StringBuilder sb = new StringBuilder();
sb.append("HTTP/1.0 200 OK").append("\r\n");
sb.append("MIME_version:1.0").append("\r\n");
sb.append("Content_Type:text/html").append("\r\n");
sb.append("Content_Length:" + html.length()).append("\r\n");
sb.append("\r\n");
// 响应内容
sb.append(html).append("\r\n");
sb.append("\r\n");
out.print(sb.toString());
out.close();
input.close();
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
client.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}