Apenas jogando isso lá fora ..
Mas o controle-d pode sinalizar o final do arquivo, e talvez seus fluxos de entrada incluam esse caractere. Isso encerraria esse fluxo de entrada, enquanto o outro poderia continuar funcionando.
Embora eu não saiba o que aconteceu em sua situação específica, sei que você pode testar isso via nc na linha de comando:
#create a server
nc -v -v -l -p 9000 #yes, I was testing xdebug...
-------- in a different terminal:
#create a client
nc localhost 9000
Digite algo em ambos. Pressione Ctrl-D em um. Agora as coisas que você digita nesse terminal não aparecem, mas as coisas que você digita no outro terminal ainda serão exibidas.
Me pegou de surpresa. Eu pensei que tinha algum tipo de problema de buffer ou era half duplex. Encontrou sua pergunta antes de encontrar a resposta.
Ah, e para garantir que ele não se comporte dessa maneira:
stty eof undef