我要用public String readLine()读取从网络来的数据,读出一行就放到一个StringBuffer里面保存起来,全部读出后返回这个StringBuffer。
问题出现在,while循环老是退不出来,运行到那里就不动了。后面的代码不能执行。
以下是源码:
public String getInfo() {
// String url = tfNorth.getText();
StringBuffer info = new StringBuffer("\r\n");
try {
// Socket s = new Socket(url, 23);
Socket s = new Socket("bbs.nuc.edu.cn", 23);
BufferedReader in = new BufferedReader(new InputStreamReader(s
.getInputStream()));
boolean flag = true;
while (flag) {
String line = in.readLine();
System.out.println(line);
if (line != null || !"".equals(line)) {
           info.append(line + "\r\n");
} else {
flag = false;
}
}
System.out.println("读取完毕!");
String result = info.toString();
return result;
} catch (IOException e1) {
e1.printStackTrace();
        return null;
}

}

解决方案 »

  1.   

    if条件似乎有问题,试试下面这个:
    if(line.equals("")
      

  2.   

    打错了,
    if条件似乎有问题,试试下面这个: 
    if(!line.equals(""))
      

  3.   

    原因分析,可能是连接Keep-Alive 了,
    可以通过下面语句设置没有数据的超时时间
    s.setSoTimeout(3000); //  3秒没有任何数据,引发 java.net.SocketTimeoutException 异常。
      

  4.   

    回bbbjvc  
    你这样写的话,是null肯定就是空指针异常了。
    回java2000_net 
    这样的话可以换个方式解决,但是没有找到问题所在。
      

  5.   

    方法如下: 
    while(flag){ 
    String   line   =   in.readLine(); 
    System.out.println(line); if ("Y".equals(s)||"y".equals(s)) 
     break;//从读入的地方增加特殊字符标志结束循环!
    if   (line!= null ¦¦!"".equals(line)){ 
    info.append(line+ "\r\n"); 
    }else{ 
    flag   =   false; 


    ///我的下边一个例子,看下可以完全解决上面问题:
    import java.io.*;
    public class ArrayDataCompara {
        public static void main(String[] args) {
            int  = 6;
            int max = 0, min = 0, count = 0;        int list[] = new int[];
            String s;
            boolean validResponse = false;
            try {
                System.out.println("请输入"+list.length+"个整数,并以“y”字符结束输入:");
                while (!validResponse) {
                 //system.INI是包含Windows初始配置信息的重要文件,控制台输入信息时读入的管道
                 //BufferedReader类unicode为单位进行读写的方法
                 //通过这个InputStreamReader类可以把这两种方式读取出来的信息相互切换
                  BufferedReader t = new BufferedReader(new InputStreamReader(System.in));
                  s = t.readLine();//readLine()读取一文本行。
                    if ("Y".equals(s)||"y".equals(s))
                        break;
                    list[count] = Integer.parseInt(s);
                    if (list[count] > max) // 判断最大值
                        max = list[count];
                    if (list[count] < min) // 判断最小值
                        min = list[count];
                    
                    count++;
                    if (count > )
                        throw new IOException();
                }
                System.out.println("\nMaximum is " + max); // 输出最大值
                System.out.println("Minimum is " + min); // 输出最小值
            } catch (Exception e) {
                System.out.println("输入非法的数据类型或超长数组定义长度:  " + e);
            }
        }
    }