java代码,通过telnetclient获取服务器上的文件内容,但是in.read()会发生无限等待。该如何处理
时间: 2024-02-09 07:12:15 浏览: 16
可以使用以下方法解决:
1. 设置读取超时时间,如果在超时时间内还未读取到数据,则抛出异常。
示例代码:
```
TelnetClient client = new TelnetClient();
client.connect("hostname", port);
// 设置读取超时时间为10秒
client.setSoTimeout(10000);
InputStream in = client.getInputStream();
BufferedReader reader = new BufferedReader(new InputStreamReader(in));
char[] buffer = new char[1024];
int len;
while ((len = reader.read(buffer)) != -1) {
System.out.println(new String(buffer, 0, len));
}
client.disconnect();
```
2. 在读取之前先判断输入流是否可读,如果不可读则等待一段时间后再次判断。
示例代码:
```
TelnetClient client = new TelnetClient();
client.connect("hostname", port);
InputStream in = client.getInputStream();
BufferedReader reader = new BufferedReader(new InputStreamReader(in));
char[] buffer = new char[1024];
int len;
while (true) {
// 判断输入流是否可读
if (in.available() > 0) {
len = reader.read(buffer);
if (len != -1) {
System.out.println(new String(buffer, 0, len));
} else {
break;
}
} else {
// 等待一段时间后再次判断
Thread.sleep(1000);
}
}
client.disconnect();
```