我正在使用Socket類進行java TCP連接。使用超時連接Socket.connect
Socket socket = new Socket();
socket.connect(new InetSocketAddress(host,port),50);
我想這個連接建立得很快或根本沒有建立,所以我使用了50毫秒的連接超時時間。
但是,如果我測量這些調用之間的時間,我會得到超過50毫秒:125毫秒,甚至200毫秒。測量我使用System.currentMillis()的時間。我知道這種方法的粒度不是很好,但+ 100ms的差異只是荒謬的。
連接方法有問題嗎?超時時間太短了50毫秒?我在Windows 7上使用java 1.7.0_03。
我不知道這是沒有實現的詳細知識交代。底層操作系統也可能使用特定的最小值或粒度作爲超時值。還要考慮從主機名解析IP地址所需的時間;這不是連接超時AFAIK的一部分。 – 2013-02-08 16:59:38
您是在測量連接成功還是失敗? – 2013-02-08 17:00:51
也可能只有第一次連接嘗試需要很長時間。嘗試在100個連接的循環中測量它。 – 2013-02-08 17:03:07