Java构建简单的http服务器

Java代码如下

package test;
 
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Date;
 
public class HTTPServer {
	public static void main(String[] args) {
		ServerSocket serverSocket = null;
		try {
			serverSocket = new ServerSocket(8080, 10);
			while (true) {
				Socket socket = serverSocket.accept();
				InputStream is = socket.getInputStream();
				is.read(new byte[2048]);
				//is.close();
				OutputStream os = socket.getOutputStream();
				
				os.write("HTTP/1.1 200 OK\r\n".getBytes());
				os.write("Content-Type:text/html;charset=utf-8\r\n".getBytes());
				os.write("Content-Length:38\r\n".getBytes());
				os.write("Server:gybs\r\n".getBytes());
				os.write(("Date:"+new Date()+"\r\n").getBytes());
				os.write("\r\n".getBytes());
				os.write("

hello!

".getBytes()); os.write("

HTTP服务器!

".getBytes("utf-8")); os.close(); socket.close(); } } catch (IOException e) { e.printStackTrace(); } } }

简单解释
ServerSocket类能够创建一个服务器端Socket,可以监听请求,有请求到达时自动接受,并返回一个对方的Socket对象,你可以根据这个Socket获取客户端的输入流,从而解析请求(这儿并没有这么做)。还可以获取响应流,返回数据作为响应。更多关于ServerSocket和Socket类的资料,请自行查找。

我们通过os.write向输出流写入了一些数据,特别注意每一个字符串结尾都有一个‘\r\n’,就是前面说的CRLF回车换行符,这个是必须有的。最终关闭socket连接。

运行程序,打开浏览器,输入http://localhost:8080, 会出现下面的页面:
Java构建简单的http服务器_第1张图片

你可能感兴趣的:(JAVA)