我有以下問題,我的應用程序中有一個簡單的TCP類,用於向設備發送消息以進行查詢,然後設備響應該消息,但沒有任何描述的行尾字符,因爲它是來自串行轉換器,最初試圖使用readline函數並發現它需要在輸出前需要eol字符我已經嘗試了掃描儀功能工作正常,除非設備因爲某種原因未響應該請求,我的應用程序然後凍結,是有可能在掃描儀功能上設置一個超時時間,這樣它就會丟棄連接並繼續前進,或者有更好的方法來完成這個任務嗎?我的代碼如下:java util掃描儀超時?
public String Send_TCP (InetAddress IPAddress, int POrt, String InData) throws IOException
{
Socket socket = null;
PrintWriter out = null;
BufferedReader in = null;
try {
socket = new Socket(IPAddress, POrt);
out = new PrintWriter(socket.getOutputStream(), true);
in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
} catch (UnknownHostException e) {
System.err.println("Don't know about host");
System.exit(1);
} catch (IOException e) {
System.err.println("Couldn't get I/O for the connection");
System.exit(1);
}
BufferedReader read = new BufferedReader(new InputStreamReader(System.in));
;
System.out.print("Connected, Sending:"+ InData);
out.println(InData);
System.out.println("Equals");
String str1 = new Scanner(in).useDelimiter(">").next() + ">";
System.out.println(str1);
System.out.println("Equals");
out.close();
in.close();
read.close();
socket.close();
return str1;
}
}
謝謝,我已經嘗試過,但不幸的是它不工作,問題是,如果掃描程序爲空,則程序將等待,防止套接字在空閒超時時關閉。基本上我需要的是,如果掃描器發現緩衝讀寫器爲空,然後在停止和關閉連接之前繼續檢查指定的超時時間。 – James 2012-07-12 17:03:40