我们都知道,IIS、Apache和tomcat等Web服务器可以用来创建Web站点,负责接受客户端浏览器的HTTP请求。那么,他们是如何实现的呢?其实基本原理是采用TCP通信模型。下面给出一个采用Java的TCP编程API创建的简易Web服务器的例子。
闲话少说,附上源码:
import java.io.OutputStream;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
public class WebService {
/**
* @param args
* @throws Exception
*/
public static void main(String[] args) throws Exception {
//用端口号创建一个ServerSocket对象,监听Web的端口80
ServerSocket ss = new ServerSocket(80);
//开始循环监听来自客户端的请求
Socket s = null;
while((s = ss.accept()) != null){
new HTTPThread(s).start();//开始一个新的线程
}
ss.close();
}
}
//线程类,HTTP处理线程
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);//创建PrintWriter对象
//往输出流写出当前的时间
pw.println("<html>");
pw.println("<body>");
pw.println("hello world!");
pw.println("</body>");
pw.println("</html>");
pw.flush();//清空缓存
//关闭输出流和Socket
pw.close();
socket.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
启动程序,在浏览器中输入“http://localhost/”,这是出现了下图结果: