8

在 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

我能够用 tcpview 终止 ESTABLISHED 连接,但不能用 tcpview 或 CurrPorts 终止 LISTENING 连接(作为管理员)。LISTENING 连接无限期保持(> 24 小时),阻止应用程序在重新启动时绑定到端口 80 和 443(“[10048] 每个套接字地址(协议/网络地址/端口)通常只允许使用一次”)。

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

我的问题:

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

谢谢!

4

0 回答 0