O Linux não aloca o soquete?

0

Estou escrevendo um aplicativo de rede e estou com um ligeiro incômodo. Eu tenho que esperar um período entre os testes, porque o meu programa de servidor, mesmo depois de fechar ainda tem a porta que estou usando "alocado" para isso. Além disso, isso torna a depuração muito difícil, já que não posso dizer o que está causando o problema com o qual estou lidando.

Para fins de teste, existe uma maneira de liberar portas TCP e UDP?

    
por Charles Noon 10.08.2016 / 03:42

1 resposta

1

No seu programa python, você precisa chamar as funções shutdown e close para o soquete, para que o SO saiba que seu programa não está mais sendo usado e ele irá desalocar o soquete se nada estiver sendo usado após chamar essas funções. Se você não conseguir chamar essas funções quando o programa for encerrado, você acabará tendo que esperar no SO para limpar os soquetes alocados. Mesmo se você forçar, mate o aplicativo, pois o SO ainda não tem como saber explicitamente que não está sendo usado. Assim, quando um programa morre e ele não fecha o soquete corretamente, o sistema operacional o manterá alocado por um pouco de tempo, até que ele verifique se realmente está sendo usado e, se não estiver, desaloca-o para uso por outros programas.

Aqui está um link que explicará as funções shutdown e close para sockets em python. Então responda

    
por 10.08.2016 / 03:52