É possível fechar um socket com um comando shell?

6

É possível fechar um socket usando algum tipo de comando / programa shell? Já vi muitos exemplos de manipulação de sockets usando C e outras linguagens, mas não consegui encontrar um programa dedicado a ele.

Isto é principalmente por curiosidade e não por qualquer necessidade real. Embora possa ser útil para o teste de estresse do meu aplicativo ou para fechar um soquete TCP que eu não quero abrir.

Estou interessado principalmente no Linux / Unix, mas uma maneira de fazer isso no Windows também seria legal.

    
por Jason Axelson 09.09.2010 / 23:22

1 resposta

6

Você pode fechar um soquete no sh assim como qualquer outro arquivo: exec 42>&- onde 42 é o descritor de arquivo. O que você não pode fazer (exceto em alguns shells que fornecem uma extensão para ele) é abrir um socket. Mas é claro que isso fecha o socket no shell, não em outro processo.

Fechar um soquete em um processo em execução interromperia seu comportamento de uma maneira que o autor do programa não deveria esperar - é como entrar e modificar uma parte da memória. Ainda assim, isso pode ser feito conectando-se ao processo com um depurador e fazendo com que ele execute uma chamada de API de fechamento de soquete (que seria a chamada de sistema close ou shutdown no unix).

    
por 09.09.2010 / 23:55