我的代码如下;
当我使用BufferedRead readLine()时,整个程序被冻结。问题是readLine将返回该行,直到它到达行尾。因为服务器不会发送新行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();
答案 0 :(得分: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);