Я бы хотел, чтобы поток ввода считывал блок вместо чтения конца потока (-1). Есть ли способ настроить поток для этого? Вот мой сервлет код:Не удается получить InputStream для чтения
PrintWriter out = response.getWriter();
BufferedReader in = request.getReader();
try {
String line;
int loop = 0;
while (loop < 20) {
line = in.readLine();
lgr.log(Level.INFO, line);
out.println("<" + loop + "html>");
Thread.sleep(1000);
loop++;
//
}
} catch (InterruptedException ex) {
lgr.log(Level.SEVERE, null, ex);
} finally {
out.close();
}
Вот мой Midlet код:
private HttpConnection conn;
InputStream is;
OutputStream os;
private boolean exit = false;
public void run() {
String url = "http://localhost:8080/WebApplication2/NewServlet";
try {
conn =
(HttpConnection) Connector.open(url);
is = conn.openInputStream();
os = conn.openOutputStream();
StringBuffer sb = new StringBuffer();
int c;
while (!exit) {
os.write("<html>\n".getBytes());
while ((c = is.read()) != -1) {
sb.append((char) c);
}
System.out.println(sb.toString());
sb.delete(0, sb.length() - 1);
try {
Thread.sleep(1000);
} catch (InterruptedException ex) {
ex.printStackTrace();
}
}
os.close();
is.close();
conn.close();
} catch (IOException ex) {
ex.printStackTrace();
}
}
Я попытался InputStream.read, но он не блокирует либо, он возвращает -1, а также. Я пытаюсь сохранить потоки ввода-вывода с обеих сторон живыми. Я хочу, чтобы сервлет дождался ввода, обработал вход, а затем отправил ответ.
В приведенном выше коде должно быть сделано это 20 раз.
спасибо за любую помощь