我正在使用标准的WinSock函数进行套接字通信,现在假设我创建了一个套接字并且我的程序突然终止了套接字是否有可能保持活动状态?
我尝试了一个小例子,首先调用返回socket
的{{1}} API,在突然终止可执行文件后,第二次调用4986
API返回socket
但是我仍然认为套接字如果没有关闭,有时会保持活动状态。
请帮助我澄清我的疑问
答案 0 :(得分:0)
在Linux机器上,如果你用一个程序打开一个套接字,然后不正确地关闭程序,即崩溃它,套接字将保持打开状态。经过一段时间后,操作系统将在这种情况下清理这些绑定套接字(我不确定它有多长,我假设它在操作系统中指定了一些位置,它不到10分钟)。
http://compgroups.net/comp.os.ms-windows.programmer.win32/bind-error-after-crash-ho/368539 我认为这意味着WinSock在崩溃后仍然保持打开状态,或者忘记用你的应用程序关闭它们。我不确定windows如何处理这些打开的套接字,但我推断它会类似于linux并在一段时间过后关闭它们