Graças a um pouco mais de pesquisa, consegui encontrar uma solução para esse problema. Consegui encontrar a solução em parte devido às informações fornecidas por resposta @ codeka .
Para resumir, como o Windows Server 2003 introduziu um driver de modo kernel ( http.sys
) para tratar de solicitações HTTP, tive que baixar um utilitário chamado HttpCfg.exe que vem nas Ferramentas de Suporte do Windows XP e usa-o para instruir http.sys
a parar de escutar solicitações HTTP na porta 80.
O comando para fazer isso foi:
httpcfg.exe delete iplisten -i 0.0.0.0:80
Depois de executar esse comando, usei a ação query
para verificar se o endereço foi realmente removido
httpcfg.exe query iplisten
E, finalmente, tive que reinicializar a máquina para que as alterações entrassem em vigor. Depois disso, consegui criar sockets TCP e ligar à porta 80.
Como nota lateral, nenhum dos outros métodos funcionou (por exemplo, desabilitar o serviço de administração do IIS ou o serviço de publicação na World Wide Web ou o serviço HTTP SSL)
OBSERVAÇÃO
Naturalmente, a resposta refere-se estritamente a como transformar o mecanismo interno disponível no Windows para processar solicitações HTTP através do kernel. Deve-se notar, no entanto, que o kernel parece fornecer uma maneira mais eficiente de processar solicitações HTTP do que pode ser alcançado no modo de usuário. Existem APIs disponíveis para aproveitar o processamento HTTP de requisições HTTP.sys (modo kernel) e eu recomendo explorá-las se for uma opção (ou seja, a menos que você esteja apenas tentando executar um serviço que já tenha sido construído)