Definindo TCP_NODELAY

1

Meu aplicativo em execução no Solaris precisa enviar pacotes tcp para o cliente a tempo, mas às vezes os pacotes enviam atrasos. Eu sei que pode criar soquete com TCP_NODELAY para resolver o problema, mas o código não pode ser alterado. Alguém pode me dizer onde eu defino o TCP_NODELAY para ON no Solaris (qualquer versão). O Solaris suporta esse parâmetro. Eu procurei no manual, mas não vi nenhuma informação útil.

    
por huangwenbo 19.07.2011 / 14:42

2 respostas

2

O Solaris suporta TCP_NODELAY como uma opção de soquete que você pode definir no código - não há uma configuração global para ativá-lo em todas as conexões. O melhor que posso pensar é escrever um pequeno módulo LD_PRELOAD que se interpõe no socket () ou connect () para chamar o método getsockopt ().

    
por 28.07.2011 / 02:41
0

Você não pode corrigir o código sem alterá-lo. Você não encontrará uma solução real porque o problema está no código e você não está disposto a alterar o código. Existem regras que devem ser seguidas ao entregar dados de saída para a pilha TCP, e se o código não os seguir, ele terá atrasos de 200 ms. É assim que o TCP funciona - não garante uma transmissão atempada.

    
por 07.09.2011 / 05:54

Tags