Netstat mostra programas rodando em diferentes portas, então eles devem

1

Eu tenho algum código que estou testando. Programa A escuta em um soquete predefinido para o programa B conectar-se e para o meu teste Estou executando 32 instâncias dos programas A e B. Eu escrevi meu script para dizer ao programa A para ouvir a porta 9001-9032 e colocar em os arquivos de configuração para cada instância do programa B a porta correspondente para se conectar.

Quando executo o script que inicializa o programa A e B e executo netstat -tnap , descubro que, de todas as portas 9001-9032, a única porta realmente usada é a 9001, que é usada por outro programa (erro meu!). Quando eu busco pelo programa A, eu acho que cada instância está ouvindo em uma porta aparentemente completamente aleatória que não tem relação com as portas 90 ** que elas deveriam estar ouvindo. No entanto, meu programa B, que deve estar se conectando às portas 9001-9032, é capaz de encontrar e conectar-se a cada instância do programa A, apesar de A aparentemente não estar escutando nas portas com as quais o B deve estar tentando se conectar. Estou bastante confuso sobre como isso é possível.

Se isso não é confuso o suficiente meu programa 32 e somente o 32 (ouvindo em 9032) morre na inicialização com um erro que o endereço foi recusado quando ele tenta se ligar à porta. Eu tentei mudar os programas para ouvir nas portas 15001-15032 só para ver o que aconteceria e eu ainda tenho exatamente o mesmo comportamento; todos os programas parecem estar escutando em portas aleatórias e o programa 32 não pode estabelecer uma conexão.

Alguém pode explicar por que meus portos estão se comportando da maneira como estão? Eu estou entendendo mal alguma parte do netstat ou das portas Linux?

    
por dsollen 23.08.2012 / 19:26

1 resposta

0

Eu recomendo simular as conexões supostamente quebradas com socat (uma ferramenta de linha de comando que estabelece fluxos de bytes arbitrários).

Tente ouvir nas portas com

socat - TCP-Listen:9001

para uma conexão tcp que escuta na porta 9001 ou

socat - UDP-Listen:9001

para uma conexão udp.

Examine se netstat -p (ou alternativamente sockstat ) mostra a conexão que socat estabeleceu. Se assim for, você deve investigar mais o seu código e talvez postar uma pergunta relacionada ao código-fonte em stackoverflow.com .

No outro caso, informe-nos!

    
por 23.08.2012 / 20:03