A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© kj1989 中级黑马   /  2014-3-27 20:54  /  1068 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

为什么网络编程时,在客户端和服务端传送数据时,都存在等待的情况?如何消除此种影响?

评分

参与人数 1技术分 +1 收起 理由
朱神必 + 1

查看全部评分

2 个回复

倒序浏览
这个等待是必须的。。。。 不可能消除  原因是  你在使用IO流读取,发送数据的时候使用了阻塞语句
如: read()   readLine()    a = s.accept()  等 这都是阻塞语句。如当 read() 去读取一个字节的时候,如果没有读取到数据,那么它会处于等待 状态。 直到读取到数据,才会往下执行。

评分

参与人数 1技术分 +1 收起 理由
朱神必 + 1

查看全部评分

回复 使用道具 举报
       如果你用到了缓冲技术的话,首先要确保将数据刷新到了流中。
       然后之所以都等待,是因为read、readLine方法都属于阻塞式方法,如上所说,它读不到数据就会陷入等待状态,如果你读完数据仍等待的话也就是客户端的数据都输出之后,那可能就是服务端这边并未读取到换行符。
      解决方法:
            你可以在两端都加换行符,或是在客户端输出完数据之后,可以加一句sc.shutdownOutput()

评分

参与人数 1技术分 +1 收起 理由
朱神必 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马