我正在使用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