1

我的代码如下;

当我使用 BufferedRead readLine() 时,整个程序被冻结。问题是 readLine 在到达行尾之前不会返回该行。因为服务器不会发送一个新的 line char 值,所以它不会关闭。

那么我该如何克服呢?请编辑我的代码;

                  while (ok) {
                        BufferedReader re = new BufferedReader(new InputStreamReader(socket.getInputStream()));
                        aString = re.readLine();
                        ...
                    }

注意:我想以编程方式执行此操作,而不是去杀死正在运行它的进程

UPDATE

StringBuilder re= new StringBuilder();
                    while ((c = r.read()) >= 0) {
                            re.append( (char)c ) ;  
                    }
                    String result = re.toString();
                    byte[] contentInBytes = result.getBytes();
                    out.write(contentInBytes);
                    out.flush();
                    out.close();
4

1 回答 1

1

不要使用BufferedReader的 readLine() 方法。使用 read() 方法,它将读取单个字符。您必须将它们从整数转换为字符,但这会让您无需读取换行符。

编辑:添加假设“re”是您的缓冲套接字输入流阅读器......

while ((i = re.read()) != -1)
{
   if (i > 0)
   {
      char c = (char) i;
      // Do something with the character
   }
}

结束编辑

此外,如果您担心服务器没有响应,那么您可能需要在Socket上设置超时:

socket.setSoTimeout(milliseconds);
于 2013-01-25T20:05:32.233 回答