[英]how to read using InputStreamReader without blocking
是否有一種簡單的方法來轉換標准代碼:
in = new InputStreamReader(socket.getInputStream());
String message = "";
while ((size = in.read(buf)) != -1){
message += new String(buf, 0, size);
}
這樣read()
就不會阻塞。 我試過做:
if (!in.ready())
//throw exception
但是這一直拋出異常。 也許:
socket.setSoTimeout(120000);
in = new InputStreamReader(socket.getInputStream());
但正如下面的每個人所說,這不起作用。 其他想法?
根據哪種InputStream支持您的閱讀器,如果您使用讀取器的固定長度字符編碼,您可以使用支持流上的可用方法。 對於InputStream的大多數實現, available()
將返回您可以無阻塞地讀取的字節數。 如果字符編碼每個字符使用固定數量的字節,您就知道可以在不阻塞的情況下從InputStreamReader中讀取多少內容。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.