Socket通信里面,在得到另一端输入流的时候,我用InputStream的read()方法来读取(没有套用其他高级流),就遇到问题了.它读不到流的末尾,因此一直阻塞.
具体是这样
int i=0;
while((i=stream.read())!=-1)
{
buffer.append((char)i);
}如果我用一个缓冲字节数组来读,用read(b[], 0, len),因为可以充满缓冲数组,所以没有阻塞
byte[] b = new byte[1024];
stream.read(b);而下面的方法和上面用read读是一个道理
byte[] b = new byte[64];
while((i=stream.read(b))!=-1)
{
buffer.append(new String(b));
}现在小弟有个问题求教各路大哥大姐,假如我的输入流字节数不确定,它有可能会超过我的缓冲数组大小,那么我该如何来读取这个输入流中的信息?
假如我就指定byte数组大小为64,那肯定装不完某个输入流中的内容
就是说,怎么样才能不需要指定字节多少,来读取完Socket中的所有内容,而不会因为读不到末尾而引起阻塞(读取中的阻塞不算)
具体是这样
int i=0;
while((i=stream.read())!=-1)
{
buffer.append((char)i);
}如果我用一个缓冲字节数组来读,用read(b[], 0, len),因为可以充满缓冲数组,所以没有阻塞
byte[] b = new byte[1024];
stream.read(b);而下面的方法和上面用read读是一个道理
byte[] b = new byte[64];
while((i=stream.read(b))!=-1)
{
buffer.append(new String(b));
}现在小弟有个问题求教各路大哥大姐,假如我的输入流字节数不确定,它有可能会超过我的缓冲数组大小,那么我该如何来读取这个输入流中的信息?
假如我就指定byte数组大小为64,那肯定装不完某个输入流中的内容
就是说,怎么样才能不需要指定字节多少,来读取完Socket中的所有内容,而不会因为读不到末尾而引起阻塞(读取中的阻塞不算)
解决方案 »
- 内存数据库redis取值问题?
- TextArea问题
- catch字句排列是子类在先还是父类在先?
- 用GeoRasterLoader在Oracle中上传图像,怎么用Java实现(分不够,可加)
- 请推荐一个java erp 开源/源码 项目.
- 最后六分了,我晕,来看看,关于hashMap的,帮帮忙,实在要分的,到我的其他帖子上拿分,今天用的分太多了,或者明天来
- 求助:java中那些是提供了改变字体颜色的类?
- 关于interface中的成员变量的问题
- 求一个socketServer的多线程的例子,即有一个链接起一个线程。在线等。急啊。谢谢。50份。
- 新手java遇到了问题,谢谢大家啊了
- 创建一个Calendar,然后把它转换成一个Date格式输出?
- 怎样用字符串表示当前目录下的所有子目录?
所以如果大哥们是让我在外面包一个BufferdReader之类的,就得不到分啦~~谢谢!