Sockets 为什么即使我没有关闭tcp连接';不使用close()函数吗?

Sockets 为什么即使我没有关闭tcp连接';不使用close()函数吗?,sockets,tcp,Sockets,Tcp,我使用ctrl+c终止套接字程序,而不是使用close()函数。TCP连接可以在一段时间后关闭。内核如何处理这种情况?我认为只有close()函数才能关闭tcp连接。您可以关闭套接字。对等方可以关闭连接 我认为只有close()函数才能关闭tcp连接 为什么会这样?TCP是一种软件定义的协议。操作系统可以随心所欲地实现它。所有合理的操作系统都会清理终止进程正在使用的所有资源。插座也将关闭。如果没有进程在使用TCP连接,也没有进程可以使用它(因为最后一个句柄被破坏),TCP连接有什么好处?如果没有

我使用ctrl+c终止套接字程序,而不是使用close()函数。TCP连接可以在一段时间后关闭。内核如何处理这种情况?我认为只有close()函数才能关闭tcp连接。

您可以关闭套接字。对等方可以关闭连接

我认为只有close()函数才能关闭tcp连接


为什么会这样?TCP是一种软件定义的协议。操作系统可以随心所欲地实现它。所有合理的操作系统都会清理终止进程正在使用的所有资源。插座也将关闭。如果没有进程在使用TCP连接,也没有进程可以使用它(因为最后一个句柄被破坏),TCP连接有什么好处?如果没有人能够读取或写入连接,那么保持连接是没有意义的。

您没有指定操作系统。但一般来说,操作系统会在终止时代表进程清理操作系统分配的资源。我认为套接字实现(如WinSock)会检测到应用程序不再运行(例如通过引用计数),并会终止套接字。