我有問題讓這個簡單的類工作。它基本上連接到IMAP服務器並讀取橫幅。但在閱讀所有字符後,它有點懸掛。在調試器中,我可以遍歷while循環,看到所有字符正在被讀取,並最終從循環中出來。但是最後的System.out.println語句永遠不會到達。如果從插座讀取
import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.InputStreamReader;
import java.net.Socket;
public class TestClient
{
/**
@param args
*/
public static void main(String[] args) throws Exception
{
Socket socket = new Socket("imap.1and1.com", 143);
DataOutputStream os = new DataOutputStream(socket.getOutputStream());
BufferedReader reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
StringBuilder sb = new StringBuilder();
char ch = (char) reader.read();
while (ch != -1) {
sb.append(ch);
ch = (char) reader.read();
}
System.out.println(sb.toString()); /// <--- never prints anything and program just hangs..
}
}
在線路協議類型的服務器應用程序(例如:POP/IMAP)沒有預定義字符來指示特定的命令結果的末尾。在這種情況下做什麼?順便說一句,在我上面的示例中的readline。但我期待多於單行,並將readLine放入循環中也會阻止。 – Mir3
然後您正在使用BufferedReader..check如果有任何選項可以告訴讀取功能在沒有數據要讀取時不會阻止。 – Krishnabhadra