2014-01-08 15 views
5

SO_TIMEOUTCONNECT_TIMEOUT_MILLISの意味は何ですか?それらの違いは何ですか?SO_TIMEOUTとCONNECT_TIMEOUT_MILLISは、NettyのChannelOptionで何を意味しますか?

多くのリクエストコストは3.004で、ハンドラは常に0.003sまたは0.004sで、SO_TIMEOUTは3000に設定されていますが、それらの間には関係がありますか?

私はSO_TIMEOUTは、応答がSO_TIMEOUT timeで送信されない場合は、すぐにこの応答を送信することを意味します。これは正しいです?

+0

私の質問をフォーマットするための@noloaderに感謝します。 – BabyDuncan

答えて

0

SO_TIMEOUTはjava.net.ServerSocket(OIO/BIO) CONNECT_TIMEOUT_MILLISが

io.netty.channel.nio.AbstractNioChannel @Override公共ボイド( 最終的に接続網状(NIO)によって設定されることにより設定されますSocketAddress [リモート、最終のSocketAddressをlocalAddress、最終ChannelPromiseの約束){// ...

 try { 
      // ... 
      if (doConnect(remoteAddress, localAddress)) { 
       fulfillConnectPromise(promise, wasActive); 
      } else { 
       // ... 
       int connectTimeoutMillis = config().getConnectTimeoutMillis(); 
       if (connectTimeoutMillis > 0) { 
        connectTimeoutFuture = eventLoop().schedule(new Runnable() { 
         @Override 
         public void run() { 
          ChannelPromise connectPromise = AbstractNioChannel.this.connectPromise; 
          ConnectTimeoutException cause = 
            new ConnectTimeoutException("connection timed out: " + remoteAddress); 
          if (connectPromise != null && connectPromise.tryFailure(cause)) { 
           close(voidPromise()); 
          } 
         } 
        }, connectTimeoutMillis, TimeUnit.MILLISECONDS); 
       } 

       // ... 
    } 
+3

SO_TIMEOUTとCONNECT_TIMEOUT_MILLISはどういう意味ですか? – BabyDuncan

4

CONNECT_TIMEOUT_MILLISは、セットアップへの接続をタイムアウト値を意味し、このタイムアウトは数Neによってサポートされていますtty。
SO_TIMEOUTソケットのオプションは、それが影響を与える次のとおりです。 ServerSocket.accept(); SocketInputStream.read() DatagramSocket.receive()

詳細は、plsはチェック:あなただけの要求タイムアウトを制御したい場合は、網状のReadTimeoutHandlerやIdleTimeoutHandlerを試みることができるhttp://docs.oracle.com/javase/1.5.0/docs/api/java/net/SocketOptions.html#SO_TIMEOUT

+0

ReadTimeoutHandler WriteTimeoutHandlerとIdleTimeoutHandlerの使い方を知っていますか?私はそれらについて困惑しています。コード例を教えていただけますか? – BabyDuncan

関連する問題