私の仕事のコンテキストは、ローカル エリア ネットワークです。
以下のコード サンプルは Java 言語で書かれていますが、私の質問はプログラミングではなく TCP に関するものです。
次の接続タイムアウトが発生しました。
-
2 ms when connection established
- ホストが稼働しているが、指定されたソケット ポートでリッスンしていない場合は 1 005 ミリ秒
- ホストがダウンしている場合は 21,000 ミリ秒
この値は私のネットワークの観察から得られたものですが、RFC が存在すると思います。
タイムアウトに関する情報を次に示します。
- RFC1122
- RFC793
- Nagle's_algorithmと TCP_NO_DELAY
もっとヒントを教えてもらえますか?
@Override
public void run() {
for( int port = _portFirst; port < _portLast; ++port ) {
String host = "192.168.1." + _address;
boolean success = false;
long before = System.currentTimeMillis();
try {
Socket socket = new Socket();
SocketAddress endpoint = new InetSocketAddress( host, port );
socket.connect( endpoint, 0 );
success = true;
socket.close();
}// try
catch( ConnectException c ){/**/}
catch( Throwable t ){
t.printStackTrace();
}
long duration = System.currentTimeMillis() - before;
System.err.println( host + ":" + port + " = " + duration );
_listener.hostPinged( host, port, success, duration );
}
}