让浏览器可以访问我们的socket服务,http协议入门

让浏览器可以访问我们的socket服务,http协议入门_第1张图片
image.png

假设有下面的需求


让浏览器可以访问我们的socket服务,http协议入门_第2张图片
image.png

接下来我们用代码演示一下
新建一个ServerClient.java
为了代码的封装 我们创建一个http包
里面创建一个Requester文件
目录如下


让浏览器可以访问我们的socket服务,http协议入门_第3张图片
image.png

首先我们在ServerClient服务端代码写入
让浏览器可以访问我们的socket服务,http协议入门_第4张图片
image.png

让浏览器可以访问我们的socket服务,http协议入门_第5张图片
image.png

接下来在Requester中需要用到下面这些知识点


让浏览器可以访问我们的socket服务,http协议入门_第6张图片
image.png

让浏览器可以访问我们的socket服务,http协议入门_第7张图片
image.png

接下来运行一下ServerClient
让浏览器可以访问我们的socket服务,http协议入门_第8张图片
image.png

然后在浏览器中输入localhost:9000 回车
让浏览器可以访问我们的socket服务,http协议入门_第9张图片
image.png

从结果可以看出一直在转圈 但是并没有报错 这肯定是有问题的 而且控制台并没有输出
接下来我们解决下
在代码中加入输出信息排错
让浏览器可以访问我们的socket服务,http协议入门_第10张图片
image.png

运行效果
让浏览器可以访问我们的socket服务,http协议入门_第11张图片
image.png

浏览器还是一样再转
但是控制台却有输出了
让浏览器可以访问我们的socket服务,http协议入门_第12张图片
image.png

这说明while循环里面的内容执行了 但是却只执行了一次 第二次卡在了read方法里面
接着改一下代码 看看读取的长度是多少


让浏览器可以访问我们的socket服务,http协议入门_第13张图片
image.png

运行结果
让浏览器可以访问我们的socket服务,http协议入门_第14张图片
image.png

说明了循环第一次运行完之后由于是大于0的 所以会进入第二次循环 但是浏览器发送给我们的inputStream已经完成了 再次读取的时候是读取不到的 所以会卡在read方法处
接下来修改一下Requester代码
让浏览器可以访问我们的socket服务,http协议入门_第15张图片
image.png

image.png

总体代码
让浏览器可以访问我们的socket服务,http协议入门_第16张图片
image.png

运行结果
让浏览器可以访问我们的socket服务,http协议入门_第17张图片
image.png

可以看见 浏览器不转圈了 但是出现了无法访问此网站
是因为服务端没有发送任何内容给浏览器 而我们仅仅是读取了内容就将socket关闭了
控制台信息
让浏览器可以访问我们的socket服务,http协议入门_第18张图片
image.png

接下来在服务端写入发送代码
让浏览器可以访问我们的socket服务,http协议入门_第19张图片
image.png

ServerClient代码添加如下
让浏览器可以访问我们的socket服务,http协议入门_第20张图片
image.png

运行结果
让浏览器可以访问我们的socket服务,http协议入门_第21张图片
image.png

让浏览器可以访问我们的socket服务,http协议入门_第22张图片
image.png

发现了浏览器中还是无法访问
这是因为我们服务端代码发送的内容没有包含任何http协议格式
接下来我们了解一下http协议
让浏览器可以访问我们的socket服务,http协议入门_第23张图片
image.png

由协议内容可知 相应头是不会出现在页面中的 我们需要在代码中拼接http协议内容
连续的两个换行即表示响应头结束了
接下来修改一下响应代码Response
让浏览器可以访问我们的socket服务,http协议入门_第24张图片
image.png

运行结果
让浏览器可以访问我们的socket服务,http协议入门_第25张图片
image.png

可以看见正常运行了
但是这时如果我多次刷新浏览器页面


让浏览器可以访问我们的socket服务,http协议入门_第26张图片
image.png

发现又出现无法访问了
因为socket被关掉了
接下来改一下socket服务端 ServerClient代码
让浏览器可以访问我们的socket服务,http协议入门_第27张图片
image.png

死循环 不断监听socket服务
运行结果
让浏览器可以访问我们的socket服务,http协议入门_第28张图片
image.png

不断刷新 也不报错
控制台输出如下
让浏览器可以访问我们的socket服务,http协议入门_第29张图片
image.png

一个为请求地址 一个是默认图片

你可能感兴趣的:(让浏览器可以访问我们的socket服务,http协议入门)