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

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

作者: 在路上phper | 来源:发表于2018-01-29 17:22 被阅读374次
    image.png

    假设有下面的需求


    image.png

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


    image.png
    首先我们在ServerClient服务端代码写入
    image.png
    image.png

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


    image.png
    image.png
    接下来运行一下ServerClient
    image.png
    然后在浏览器中输入localhost:9000 回车
    image.png
    从结果可以看出一直在转圈 但是并没有报错 这肯定是有问题的 而且控制台并没有输出
    接下来我们解决下
    在代码中加入输出信息排错
    image.png
    运行效果
    image.png
    浏览器还是一样再转
    但是控制台却有输出了
    image.png

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


    image.png
    运行结果
    image.png
    说明了循环第一次运行完之后由于是大于0的 所以会进入第二次循环 但是浏览器发送给我们的inputStream已经完成了 再次读取的时候是读取不到的 所以会卡在read方法处
    接下来修改一下Requester代码
    image.png
    image.png
    总体代码
    image.png
    运行结果
    image.png
    可以看见 浏览器不转圈了 但是出现了无法访问此网站
    是因为服务端没有发送任何内容给浏览器 而我们仅仅是读取了内容就将socket关闭了
    控制台信息
    image.png
    接下来在服务端写入发送代码
    image.png
    ServerClient代码添加如下
    image.png
    运行结果
    image.png
    image.png
    发现了浏览器中还是无法访问
    这是因为我们服务端代码发送的内容没有包含任何http协议格式
    接下来我们了解一下http协议
    image.png
    由协议内容可知 相应头是不会出现在页面中的 我们需要在代码中拼接http协议内容
    连续的两个换行即表示响应头结束了
    接下来修改一下响应代码Response
    image.png
    运行结果
    image.png

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


    image.png
    发现又出现无法访问了
    因为socket被关掉了
    接下来改一下socket服务端 ServerClient代码
    image.png
    死循环 不断监听socket服务
    运行结果
    image.png
    不断刷新 也不报错
    控制台输出如下
    image.png
    一个为请求地址 一个是默认图片

    相关文章

      网友评论

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

          本文链接:https://www.haomeiwen.com/subject/avwxzxtx.html