O comentário por @ meuh sugeriu usar socat
para isso propósito. Baseado nisso eu usei com sucesso
some command | socat -t30 - TCP:localhost:1234
Para transferir dados incluindo EOF e ainda receber a resposta.
Como posso fazer com que uma conexão netcat termine a metade de envio de uma conexão TCP se sua entrada atingir EOF?
Eu tenho um serviço TCP (não-padrão) que lê todas as suas entradas (ou seja, até que o cliente envie seu FIN), e só então começa a processar os dados e enviar de volta uma resposta. Eu gostaria de usar nc
para interagir com este serviço. Mas no momento em que a resposta não chega ao console nc
, e usando o Wireshark, posso ver que nc
apenas encerra o lado de envio da conexão quando ela sai (por exemplo, devido a um tempo limite). Não encontrei nenhuma opção de linha de comando para alterar esse comportamento.
O comentário por @ meuh sugeriu usar socat
para isso propósito. Baseado nisso eu usei com sucesso
some command | socat -t30 - TCP:localhost:1234
Para transferir dados incluindo EOF e ainda receber a resposta.