Java Socket搭建一个简单地Web服务器(1)
今天突然想写一个简单地Web服务器,根据我对Tomcat的了解,简单总结了一下写一个简单地服务器需要哪些步骤:
1.首先肯定要借助ServerSocket和Socket这两个类。
2.ServerSocket类指定服务器接口。
3.ServerSocket调用accept()方法生成一个Socket对象,Socket对象调用getInputStream()获得浏览器发来的Http请求的基本信息。
4.服务器解析Http请求的基本信息,从中取出浏览器想要访问的资源的具体位置。
5.服务器找到资源的具体位置,并将资源发送回浏览器
一步一步来进行解决:
第一步肯定是ServerSocket serverSocket = new ServerSocket(port);
然后使用一个While(true)死循环来实现持续监听。
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
String message = bufferedReader.readLine();
这里message输出的就是浏览器发送请求的基本信息,如果浏览器地址栏是:127.0.0.1:port/test
那么message返回的信息就是 GET(请求方法) /test(请求资源)Http 1.1(请求协议版本)
那么就只要从message中把/test取出来就可以。
取出来请求的资源后,要做的就是找到资源并且把资源发送回浏览器。
但是仅仅将资源直接发送回浏览器,浏览器可能无法解析资源,所以还需要对发送回去的信息设置header
printStream.println("Http/1.1 200 OK");
printStream.println("Content-Type:text/html");
printStream.println();
设置完后,基本上就实现了一个简单地web服务器功能
放上代码:
下一步准备对请求的资源的类型进行解析,是服务器能够响应多种不同类型资源的请求。