码迷,mamicode.com
首页 > 编程语言 > 详细

Java实现一个简易HTTP服务器 (二) -- 多线程

时间:2020-03-24 12:28:24      阅读:65      评论:0      收藏:0      [点我收藏+]

标签:http服务器   bytes   ati   handler   file   tostring   读取数据   取数据   while   

Java实现一个简易HTTP服务器 (二) -- 多线程

运行方法:新建项目后在目录下创建index.html.

favicon为可选项,作为网站图标

public class Server {
    public static void main(String[] args) throws IOException {
        ServerSocket serverSocket = new ServerSocket(80);
        System.out.println("Server started at " + new Date() + "\n");
        try {
            while (true) {
                // 通信socket的获得
                Socket socket = serverSocket.accept();
                new Thread(new Handler(socket)).start();
            }
        } catch (Exception e) {
            e.printStackTrace();
            serverSocket.close();
        }
    }
}
public class Handler implements Runnable {

	public Socket socket;
	public static int BUFFERSIZE = 2048;

	public Handler(Socket socket) {
		this.socket = socket;
	}

	public void run() {
		try {
			InputStream in = socket.getInputStream();
			OutputStream out = socket.getOutputStream();
			byte[] buf = new byte[BUFFERSIZE];

			// 读取数据
			int len = in.read(buf);
			String s = new String(buf, 0, len);
			Request request = new Request(s);
			Logger logger = new Logger(System.out);
			logger.writelog(request.toString()+"\n");
			
			//返回数据
			String path = request.path;
			if (path.equals("/"))
				path = "index.html";
			if (path.equals("/favicon.ico"))
				path = "favicon.ico";
			File file = new File(path);
			InputStream fin = new FileInputStream(file);
			out.write(("HTTP/1.1 200 OK\n" + "Content-Type: text/html" + "\n\n").getBytes());
			while ((len = fin.read(buf)) > 0)
				out.write(buf, 0, len);

			// 关闭连接
			socket.close();
			fin.close();
		} catch (IOException e) {
			e.printStackTrace();
		}

	}

}

Java实现一个简易HTTP服务器 (二) -- 多线程

标签:http服务器   bytes   ati   handler   file   tostring   读取数据   取数据   while   

原文地址:https://www.cnblogs.com/cdbb/p/12558120.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!