Sockets e descritores de arquivo

1

Até onde eu vi, um socket cria 3 descritores de arquivos na pasta / proc // fd, STDIN, STDOUT e STDERR.

Quando eu insiro em um soquete, ele deve sair do outro soquete, em uma conexão TCP-RA, mas a coisa é, quando eu echo o STDIN ele não imprime a string.

Eu anexei uma foto:

Espero ver a saída na tomada de escuta, mas não vejo. Obrigado

    
por aDoN 11.04.2018 / 10:10

1 resposta

5

Abrir um soquete abre um soquete , que é o que você vê listado como descritor de arquivo 3 na sua saída ( socket:[5474494] ). Os outros três descritores de arquivos são os descritores padrão de entrada, saída e erro, que são abertos por padrão para qualquer processo. No seu caso, eles apontam para o terminal onde o programa está rodando, e é por isso que “surni” aparece lá quando você escreve no descritor de arquivo.

Para escrever no soquete, você precisa usar mecanismos apropriados, como netcat na outra direção:

echo Hello | nc localhost 9999

ou, se você estiver usando o Bash:

echo Hello > /dev/tcp/localhost/9999

No entanto, parece que você já tem uma conexão estabelecida para a porta 9999 usando outro netcat , para que isso não funcione no seu caso. Você precisa usar a conexão estabelecida ...

Se você espera que um nc de longa duração forneça uma maneira de outros processos serem inseridos no soquete, você precisa definir isso por exemplo. usando um FIFO:

mkfifo socket-input
nc localhost 9999 < socket-input
echo Hello > socket-input
    
por 11.04.2018 / 10:22