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服务器功能


放上代码:Java Socket搭建一个简单地Web服务器(1)

Java Socket搭建一个简单地Web服务器(1)

Java Socket搭建一个简单地Web服务器(1)


下一步准备对请求的资源的类型进行解析,是服务器能够响应多种不同类型资源的请求。