简单的服务器请求处理demo

####前言
> 使用`java.net.ServerSocket`,实现服务器对请求的简单响应

#### 代码
```java
package pers.mine;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Date;

public class MineTom {
	public static void main(String[] args) throws IOException {
		ServerSocket ss = new ServerSocket(10086);
		while (true) {
			Socket socket = ss.accept();
			System.out.println("开始接收请求>>>");
			InputStream inputStream = socket.getInputStream();
			InputStreamReader inputStreamReader = new InputStreamReader(inputStream);
			BufferedReader br = new BufferedReader(inputStreamReader);
			String buffer = null;
			while ((buffer = br.readLine()) != null && !buffer.equals("")) {
				System.out.println(buffer);
			}

			OutputStream outputStream = socket.getOutputStream();
			OutputStreamWriter out = new OutputStreamWriter(outputStream);
			BufferedWriter bw = new BufferedWriter(out);
			bw.write("HTTP/1.1 200 OK\n");
			bw.write("Content-Type: text/html; charset=UTF-8\n\n");
			bw.write("<h1>[" + new Date() + "]Hello World!</h1>");
			bw.flush();
			// socket是个全双工的通讯,Server端的职责是响应请求,所以一个流关闭,则socket也没办法工作了
			// 也就是说在关闭其中一个流之后,整个socket也相当于关闭了,所以把关闭流的操作放外面			
			// 正常情况从内带外顺序关闭流会报异常,不过这里没有,有点奇怪
			inputStream.close();
			inputStreamReader.close();
			br.close();//其实只关闭最外层流就可以,内部会自己处理
			bw.close();
			socket.close();

			System.out.println("响应结束>>>");
		}
	}
}

```

------------
> 本文由 [叶不空](https://yebukong.com "叶不空") 创作,采用 [知识共享署名 4.0 国际许可协议](https://creativecommons.org/licenses/by/4.0/ "知识共享署名 4.0 国际许可协议")进行许可,转载请附上链接!
> 本文链接: [https://yebukong.com/article/1108057210631585794.html](https://yebukong.com/article/1108057210631585794.html "简单的服务器请求处理demo")
                        
(°ο°)评论插件未能完成加载!