浏览 3449 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2011-08-31
最后修改:2011-08-31
在等的过程中,我还可以进行超时检测,代码如下所示。 但是最近的项目中遇到一个问题,就是available()方法一直返回的是0,我用BufferedReader.ready()就可以读回来,大家知道是怎么回事儿吗?或者大家都是如何写这种接收的程序呢? 代码如下: int len = is.available(); long t1 = System.currentTimeMillis(); while (len == 0) { long t2 = System.currentTimeMillis(); // 检查接收是否超时,如果超时就抛出异常 if (this.soTimeout < (t2-t1)) throw new TimeoutException("接收数据超时:" + (t2-t1) + "ms"); Thread.currentThread().sleep(10); len = is.available(); } byte[] bs = new byte[len]; this.is.read(bs); 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2011-08-31
在网上看到有说必须要先read(),然后再调用available()方法来检测可以读的数据大小,但是如果真这样操作,对方一直不给发数据,我这边就会一直等,超时不好控制呀。
|
|
返回顶楼 | |