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结构

  目前我也不知道怎么弄。

  

 

posted @ 2019-04-20 12:55  小名的同学  阅读(445)  评论(0编辑  收藏  举报