netcat 클라이언트의 ^C가 서버를 종료하는데 서버의 ^C가 클라이언트를 종료하지 않는 이유는 무엇입니까?

netcat 클라이언트의 ^C가 서버를 종료하는데 서버의 ^C가 클라이언트를 종료하지 않는 이유는 무엇입니까?

Ubuntu 18.04 LTS에서 고대 netcat을 테스트했습니다. OpenBSD의 netcat:

$ dpkg -l|grep netcat
ii  netcat-openbsd                             1.187-1                             
amd64        TCP/IP swiss army knife

nc -v -v -v -l -p 1234서버와 클라이언트를 차례로 열면 다음 nc -v -v -v localhost 1234동작이 관찰됩니다.

  • 클라이언트가 shutdown 을 사용하면 ^C클라이언트와 서버가 모두 종료됩니다.
  • 서버가 다운되었을 때 사용하면 ^C클라이언트에 영향을 주지 않고 서버만 종료됩니다.

행동이 비대칭인 이유는 무엇입니까? 서버가 종료되면 클라이언트도 종료되어야 하는 것 아닌가요?

서버가 종료된 후 클라이언트에 텍스트 줄을 입력하면 결국 클라이언트도 종료되는 것 같습니다.

관련 정보