package com.ch10_network;
import java.io.IOException;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
/**
* 一个简单的Web服务器
* 浏览器在访问一个web服务器的时候,本质上也是发了一次TCP连接的请求,然后服务器端根据请求的URL不同,返回不同的结果
* 只不过,它们的通信存在一些特殊的规定,例如,HTTP状态值是200则代表请求成功,返回的HTML语言的文本等。浏览器会根据
* 返回的HTML代码,做出相应的解析和效果展示。
* 毫无疑问,Web服务器肯定也是支持多线程的。这里,有一个简单的Web服务器端程序示例,它始终在浏览器中打印一句:
* hello this is my web page.详细代码如下。
* @author js
*
*/
public class WebServer {
public static void main(String[] args) throws Exception {
ServerSocket ss = new ServerSocket(80);
Socket s = null;
while((s=ss.accept())!=null) {
new HTTPThread(s).start();
}
ss.close();
}
}
class HTTPThread extends Thread{
private Socket socket;
public HTTPThread(Socket socket) {
super();
this.socket=socket;
}
public void run() {
try {
OutputStream os = socket.getOutputStream();
PrintWriter pw = new PrintWriter(os);
pw.println("<html>");
pw.println("<body>");
pw.println("hello this is my web page");
pw.println("</body>");
pw.println("</html>");
pw.flush();
pw.close();
socket.close();
}catch (IOException e) {
e.printStackTrace();
}
}
}
运行上述代码,浏览器访问:http://localhost:80/,即可看到效果。