socket读取数据中的错误~~

来源:百度知道 编辑:UC知道 时间:2024/06/23 15:09:53
代码:
1 ServerSocket ss=new ServerSocket(8001);
2 Socket s = ss.accept();

3 InputStream in = s.getInputStream();

4 byte[] data = new byte[1024];
5 int nBytes=0;
6 String str="";
7 do
8 {
9 nBytes = in.read(data, 0, 5);
10 if(nBytes!=-1)
11 str += new String(data, 0, nBytes);
12 } while (nBytes==5)

当接收的数据大小于5个字节和大于5个字节都可以正常运行.

但是

当接收的数据大小等于5字节或者是5的倍数,经过测试,在第9行卡住.也不报错,大家帮我看看啊!
while ((nBytes = in.read(data, 0, 5))!=-1)
{
str += new String(data, 0, nBytes);
}

这样就直接卡住 也没报错 - -
我用的是JDK1.6.0 难道是编译器的问题?

在第9行卡住,是卡在读数据,数据大小等于5字节时,数据已经在上一次循环中被读完了。
循环改成这样试试。
while ((nBytes = in.read(data, 0, 5))!=-1)
{
str += new String(data, 0, nBytes);
}