情况说明
比如下面的代码,会一直处于堵塞状态。
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结构
目前我也不知道怎么弄。