让我们的socket服务拥有简单的html访问功能(浏览器访问)
2018-01-30 本文已影响24人
在路上phper
上一节我们做了一个非常简单的socket服务,我们的浏览器可以直接访问我们的服务端 并且我们输出一段非常简单的字符串
并且简单的触碰了http协议 通过一个简单的http协议发送 我们可以得到浏览器连接服务端的时候发送的请求信息
image.png
image.png
这一节我们实现上面第二个功能 在浏览器敲入ip地址 加上路径 只要服务端存在这个路径或者文件 就可以访问到服务端具体的文件
思路如下
image.png
首先取出浏览器发送的请求信息内容(可以通过截取字符串的方式)
第一步 取出访问路径 和服务端文件和文件夹进行比对 如果存在 则读取出来 输出给客户端
我们先运行一下上一节的代码 并在浏览器后面加入文件名
如下
image.png
运行控制台结果
image.png
可以看见从根目录下面加入了index.html
同理我们还可以加入目录层级
如下
image.png
运行结果
image.png
可以看见我们浏览器输入有层级的目录及文件 控制台输出的请求信息也会输出有层级的内容
因此我们可以把请求信息通过字符串截取的方式 将路径取出
接下来我们引入正则表达式
image.png
下面我们修改一下Requester代码
image.png
接下来需要写一段输出代码 假设输出是index.html 这时候需要在一个特定的文件夹
由于我们暂时没有使用灵活的配置 所以现在resource目录下创建 模拟tomcat的方式
目录如下
image.png
接下来就需要用到Response将内容读取出来并调用writehtml将内容发送出去就可以了
image.png
接下来演示下调用代码ServerClient
image.png
运行结果
image.png
出现乱码 这时编译生成在target下面 有webapps目录了
修改下面的html代码
image.png
image.png
刷新页面
image.png
接下来我们访问abc.html
image.png
出现了我们在程序中写死的404了
这时我们在target编译生成的目录下面新建一个abc.html
image.png
里面随便输入内容
再次刷新浏览器可以看见能够读取到内容(以后可以类似这种方法做缓存的功能)
image.png
接下来在target下面创建一个文件夹user里面放入list.html
image.png
里面写入内容
用浏览器访问
image.png
可以看见只要存在就能够访问的到