Estou executando o link beyondtv no xp, conectando-me ao beyondtv um host do vista. O programa Link trava após cerca de 20 minutos e não tenho solução para isso. Quando isso acontece, usando o tcpview, vejo que o host tem cerca de 200 conexões zombie tcp restantes da conexão Link. Não consigo limpá-los, eles são do mesmo processo inexistente. As conexões permanecem até eu reiniciar o host. Reiniciar é a única maneira que encontrei para reconectar o beyondtv Link. Acho que existe um bug no beyondtv que está causando isso, mas não consigo obter respostas nos fóruns deles. Mas, de qualquer forma, gostaria de saber se existe uma maneira de eliminar todas essas conexões.
Editar: na verdade, são cerca de 3000 WAIT_CLOSE conexões acumuladas após cerca de 40 minutos e, em seguida, o cliente morre. Se eu fechar o aplicativo do servidor, todos esses soquetes agora serão exibidos como pertencentes a um processo -não-existente- no tcpview. Compreensível. Mas não há uma maneira de fechá-los sem reiniciar?
fonte
Respostas:
Você pode usar o Currports da Nirsoft para monitorar e eliminar conexões.
Você pode automatizar a eliminação de um padrão de conexão usando o AutoHotKey.
fonte
CLOSE_WAIT significa que a conexão foi fechada na outra extremidade.
Evidentemente, o beyondtv não detecta essa condição e continua a enviar dados para o aplicativo na outra extremidade. A outra extremidade não pode enviar nada de volta por essa conexão, pois fechou o final da conexão.
A solução é configurar a entrada TcpTimedWaitDelay em
Por padrão, na minha máquina, ele contém o valor -1, que eu entendo como conexões fechadas nunca são liberadas, que é exatamente o comportamento que você está observando.
Sugiro que você defina o valor dessa entrada no intervalo permitido de 30 a 300 segundos. Suponho que 300 segundos = 5 minutos são suficientes para o seu caso, onde são necessários 40 minutos para congelar o computador.
fonte
TIME_WAIT
me trouxe aqui. Obrigado pela explicação e link.Você pode forçar o Windows a forçar o fechamento de todas as conexões TCP 1) desabilitando e 2) reativando sua interface de rede. Se isso funcionar, você pode criar scripts em lote das etapas a serem executadas quando necessário.
Procurei alguma maneira de fazer isso via linha de comando, a partir do
netsh
utilitário (ou similar), mas até agora não tive sorte.Obviamente, a melhor maneira de corrigir isso é corrigir o aplicativo quebrado. Verifique se você está tentando a versão mais recente do aplicativo; continue incomodando os desenvolvedores; se você já possui a versão mais recente, tente localizar uma versão mais antiga do programa.
fonte
Você provavelmente está recebendo essas sessões CLOSE_WAIT por causa do programa interrompido - não sei dizer se você as suspeita como a causa, por isso só queria deixar isso claro.
Meu palpite é que eles não ficarão para sempre; provavelmente apenas por 2 horas e 5 segundos. Pode parecer uma eternidade, eu sei. Você pode tentar ajustar o KeepAliveTime (provavelmente requer uma reinicialização final) da sua conexão de rede para algo pequeno, como 5 minutos. Isso pode ajudá-los a desaparecer mais rapidamente, após a interrupção do programa.
Ou, se você sabe que pode executar o programa de maneira confiável por, digamos, 10 minutos por vez, você pode simplesmente reiniciá-lo periodicamente. Não sei se alguma dessas soluções é útil para sua situação específica; Concordo com o ~ charlatão que você deve abandonar a versão problemática do aplicativo o mais rápido possível.
fonte
Veja se o beyondtv está gerando outro processo que mantém as conexões abertas. O Process Explorer mostra se isso está acontecendo.
fonte
É possível que exista um problema de firewall? Pode ser uma conexão incompleta sendo tentada e tentada novamente.
Eu desativaria todos os firewalls nas duas máquinas e, se houver um roteador, também seu firewall interno.
fonte
Experimente a correção do WinSock XP.
http://www.snapfiles.com/get/winsockxpfix.html
Isso destrói sua conexão e a redefine para o padrão. Eu sempre mantenho isso em um pen drive quando tudo mais falha.
fonte