代码之家  ›  专栏  ›  技术社区  ›  user1920845

网络中非阻塞信道中的SO_超时

  •  8
  • user1920845  · 技术社区  · 11 年前

    如果通道在超时毫秒内未收到读取/响应,SO_TIMEOUT是否会使非阻塞通道过期?

    bootstrap.group(workerGroup).channel(NioSocketChannel.class).
    .handler(channelInitializer).option(ChannelOption.SO_TIMEOUT, 100);
    

    此外,该选项是否也适用于服务器通道?如:

    serverBootstrap.group(bossGroup, workerGroup).channel(NioServerSocketChannel.class).
    localAddress(new InetSocketAddress(8800)).childHandler(serverChannelInitializer).
    option(ChannelOption.SO_TIMEOUT, 100).bind().sync();
    
    1 回复  |  直到 11 年前
        1
  •  11
  •   trustin    11 年前

    SO_TIMEOUT 仅对OIO套接字传输有效。你应该使用 IdleStateHandler 并处理 IdleStateEvent 在您的 userEventTriggered() 实施