zoukankan      html  css  js  c++  java
  • java web----关于tcp堵塞的问题

    情况说明

    比如下面的代码,会一直处于堵塞状态。

        while((len = in.read(b))!=-1){
            String str = new String(b,0,len);
            System.out.println(str);
        }
    

    修改代码

    byte[] bytes = new byte[1024*10]
    in.read(bytes)//直接将数据一次性读取出来
    in.read()     //发送堵塞在这里
    

    按道理in.read(),最后一次读取数据的时候应该会返回-1,但是却堵塞了

    原因在于一个服务不知道什么时候这个数据有没有接受完毕,但服务没有读取到结束标志的时候,就会出现一直堵塞,等你的数据到来

    C/S结构

      解决方式1:

    socker.shutdownOutput(); //告诉服务器我的数据已经发送完毕,你不要在堵塞了
    

      解决方式2:发送数据的时候手动在数据最后添加一个结束标识符;(我忘记了是什么了)

    B/S结构

      目前我也不知道怎么弄。

      

  • 相关阅读:
    微信消息类型和事件类型
    lnmp环境搭建脚本
    laravel框架踩过的坑
    vue结构详解
    PHP消息队列实现及应用
    laravel 运行错误
    笔记分享
    cf730e
    cf 730i
    cf 731f
  • 原文地址:https://www.cnblogs.com/yanxiaoge/p/11620279.html
Copyright © 2011-2022 走看看