Problema na leitura do soquete

1

Eu tenho um programa de streaming de faíscas, que lê os dados de um soquete que eu citei usando:

nc -lk 9999

O programa lê os dados do socket e exclui as mensagens "Error". Quando escrevo manualmente no socket, funciona bem.
Eu criei um script python que imprime mensagens "Erro" com freqüência. Eu salvarei o resultado em um arquivo usando:

stdbuf -oL python my_script.py &>> my_file.txt

e leia o arquivo do soquete:

nc -lk 9999 | tail -f my_file.txt

Tudo está ok, o socket vai ler os dados do arquivo enquanto o arquivo está sendo atualizado em segundo plano, mas o problema é que o meu programa spark não captura as mensagens "Error". Como resumo: quando eu escrevo manualmente mensagens "Erro" no socket, faísca-as, Mas ele não irá capturar "Error" mensagem gerada pelo script python do soquete.
Na verdade, o programa não funciona se eu ler o arquivo do soquete em vez de digitá-lo.
Qual a diferença?

    
por Ali Majed HA 20.05.2018 / 16:41

1 resposta

1

O comando que você digitou

nc -lk 9999 | tail -f my_file.txt

significa: pegue a saída de netcat e canalize isso para tail -f my_file.txt . Mas tail não aceita nenhuma entrada, apenas observa o arquivo my_file.txt . Experimente

tail -f my_file.txt | nc -lk 9999

em vez disso, para que a saída de tail seja alimentada para nc .

    
por PerlDuck 20.05.2018 / 16:53