为什么netcat客户端上的^C会关闭服务器,而服务器上的^C不会关闭客户端?

为什么netcat客户端上的^C会关闭服务器,而服务器上的^C不会关闭客户端?

我在 Ubuntu 18.04 LTS 上测试了古老的 netcat。 netcat 来自 OpenBSD:

$ 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打开客户端时,我观察到以下行为:

  • 如果客户端使用 关闭^C,这将关闭客户端和服务器
  • 如果服务器关闭时使用^C,这将仅关闭服务器而不影响客户端

为什么行为不对称?如果服务器关闭了,客户端不也应该关闭吗?

似乎在服务器关闭后,在客户端中键入任何文本行最终也会导致客户端关闭。

相关内容