2012-11-22 102 views
2

我寫一個程序,它需要讀取的形式插座爲以下的合理時間:什麼是等待setSoTimeout

socket = (SSLSocket) factory.createSocket(domain, port); 
socket.setSoTimeout(5000); 
socket.startHandshake(); 

我沒有在socket編程經驗。我需要知道在拋出錯誤之前等待5秒是否合理?我需要設定一個我沒有失去建立聯繫的機會的時間。

第二個問題是:當計時器開始時,一旦開始閱讀,它會停止嗎?或者,我應該考慮程序需要完成閱讀的時間嗎?

回答

0

你的第一個問題基本上沒有意義。您可以根據您對平均服務器響應時間的預期以及準備等待多長時間來設置讀取超時,然後再決定是否存在問題。只有你有信息來量化你的應用程序的情況下,但肯定5秒太短了。一個經驗法則是根據方差使用預期響應時間的兩倍或三倍,但這取決於您自己決定。

要回答第二個問題,計時器在您輸入read()時啓動,並在數據的第一個字節到達或超時過期時停止。