Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

433
Visualizações
¿Cómo configurar el tiempo de espera de DotNetty (Netty) Bootstrap.ConnectAsync?

Estoy usando DotNetty en Unity y tengo el siguiente arranque del cliente, cuando el servidor está inactivo, "clientBootstrap.ConnectAsync()" tardará alrededor de 17 segundos en dejar de intentar establecer una conexión, durante los cuales, el cliente está congelado. En realidad, no necesita intentarlo durante 17 segundos para saber que no puede haber conexión. ¿Cómo puedo configurar para que el "clienteBootstrap.ConnectAsync ()" intente solo durante unos 5 segundos? Agregué ".Option(ChannelOption.ConnectTimeout, TimeSpan.FromMilliseconds(5000))", pero aun así, se necesitan 17 segundos para dejar de intentarlo. La opción solo activó una excepción de tiempo de espera adicional.

 try { var clientBootstrap = new Bootstrap(); clientBootstrap .Group(group) .Channel<TcpSocketChannel>() .Option(ChannelOption.TcpNodelay, true) .Option(ChannelOption.ConnectTimeout, TimeSpan.FromMilliseconds(1000)) .Handler(new ActionChannelInitializer<ISocketChannel>(channel => { var pipeline = channel.Pipeline; pipeline.AddLast(new IdleStateHandler(0, 0, 6)); ...... })); clientChannel = await clientBootstrap.ConnectAsync(new IPEndPoint(IPAddress.Parse(IP), Port));

Muchísimas gracias.

over 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

Debería poder establecer un tiempo de espera de acuerdo con esto :

No estoy familiarizado con dotnetty pero aplicado a su fragmento, intentaría algo como:

 try { var clientBootstrap = new Bootstrap(); clientBootstrap .Group(group) .Channel<TcpSocketChannel>() .Option(ChannelOption.TcpNodelay, true) .Option(ChannelOption.ConnectTimeout, TimeSpan.FromMilliseconds(1000)) .Handler(new ActionChannelInitializer<ISocketChannel>(channel => { var pipeline = channel.Pipeline; pipeline.AddLast(new IdleStateHandler(0, 0, 6)); ...... })); int timeout = 5000; var clientChannel = clientBootstrap.ConnectAsync(new IPEndPoint(IPAddress.Parse(IP), Port)); if (await Task.WhenAny(clientChannel, Task.Delay(timeout)) == clientChannel) { // task completed within timeout } else { // timeout logic } }

Útil para leer la documentación de retraso de tareas:

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda