Windows无限期地为不存在的进程保留侦听套接字

Windows无限期地为不存在的进程保留侦听套接字,windows,networking,Windows,Networking,在Windows上,进程628(我的应用程序)退出后,tcpview显示: Process PID Pro Local Address Local Port Remote Address Rem Port State -------------- --- --- ------------- ---------- --------------- -------- ----------- <non-existent> 628 TCP 0.0.0.0 http

在Windows上,进程628(我的应用程序)退出后,tcpview显示:

Process        PID Pro Local Address Local Port Remote Address  Rem Port State
-------------- --- --- ------------- ---------- --------------- -------- -----------
<non-existent> 628 TCP 0.0.0.0       http       0.0.0.0         0        LISTENING
<non-existent> 628 TCP 0.0.0.0       https      0.0.0.0         0        LISTENING
<non-existent> 628 TCP 0.0.0.0       http       x.x.x.x         xxxxx    ESTABLISHED
处理PID Pro本地地址本地端口远程地址Rem端口状态
-------------- --- --- ------------- ---------- --------------- -------- -----------
628 TCP 0.0.0.0 http 0.0.0.0.0侦听
628 TCP 0.0.0.0 https 0.0.0.0.0侦听
628 TCP 0.0.0.0 http x.x.x xxxxx已建立
我能够用tcpview终止已建立的连接,但不能用tcpview或CurrPorts终止正在侦听的连接(作为管理员)。侦听连接无限期地保持(>24小时),防止应用程序在重新启动时绑定到端口80和443(“10048]通常只允许使用一次每个套接字地址(协议/网络地址/端口”)

当我在绑定侦听套接字之前添加了SO_REUSEADDR选项时,应用程序仍然无法绑定端口,这次是“[10013]试图以其访问权限所禁止的方式访问套接字”

我的问题是:

  • 在拥有进程结束后保留侦听套接字有意义吗?它不是处于半关闭状态,因为没有建立连接
  • 是否预期一个不存在的进程的套接字将无限期地逗留
  • Windows/Winsocks中有这些已知的bug吗

谢谢

不,不,我也不知道。我会重新启动。问题是否可再现?流程是否启动子流程?如果是这样,它们中是否有一个仍在运行?您是如何清理套接字的?您在这里使用的是什么语言/api/框架?可能包括没有正确关闭套接字(或者根本没有关闭),调用WSAShutdown的次数与调用WSAStartup的次数相同(如果您直接使用winsock),或者是一个僵尸进程(前面的评论-有一个向上投票权)。您是否尝试过使用process explorer查看应用程序下运行的内容,并查看某个地方是否有未关闭的内容?