我有接受通過客戶端套接字進行的連接上,我需要從該客戶端套接字讀取輸入,現在假設客戶開到我的服務器的連接,而通過服務器的發送任何一個服務器上運行socket outputstream,在這種情況下,當我的服務器試圖通過客戶端套接字的輸入流讀取輸入時,會拋出一個異常,但在拋出異常之前,我希望超時時間爲5秒,我該怎麼做?目前這裏是我的代碼看起來像在服務器端:設置超時的InputStreamReader變量
try
{
InputStreamReader clientInputStream = new InputStreamReader(clientSocket.getInputStream());
int c;
StringBuffer requestBuffer = new StringBuffer();
while ((c = clientInputStream.read()) != -1)
{
requestBuffer.append((char) c);
if (requestBuffer.toString().endsWith(("\r\n\r\n")))
break;
}
request = new Request(requestBuffer.toString(), clientSocket);
}
catch (Exception e) // catch any possible exception in order to keep the thread running
{
try
{
if (clientSocket != null)
clientSocket.close();
} catch (IOException ex)
{
ex.printStackTrace();
}
System.err.println(e);
//e.printStackTrace();
}
沒有,但我現在試着這樣做: clientSocket.setSoTimeout(5000); 但是異常仍然立即拋出。 – Noona 2010-05-19 22:37:53
什麼是異常類和消息? – mdma 2010-05-19 22:53:02
java.net.SocketException異常:連接復位 其來源是這一行: 而((C = clientInputStream.read())!= -1) – Noona 2010-05-19 22:55:43