无法在 Windows 上打开未使用的端口

无法在 Windows 上打开未使用的端口

最近我无法在我的 PC(Windows10)上打开某些未使用的本地端口。例如,当我尝试使用 Python 套接字打开端口 1883 时,它给出了以下信息:

[WinError 10013] 尝试以访问权限禁止的方式访问套接字

但是,netstat -nq | findstr 1883powershell 中什么都没有显示,这应该表明端口没有被绑定。

后来我发现其他端口也存在这个问题。下面是我用来检查的简单脚本:

import socket 
with open('out.txt', 'w') as f:
    for i in range(1,10000):
        s = socket.socket()
        host = socket.gethostname()
        port = i
        try:
            s.bind((host, port))
            print("succeeded",port, file=f)
        except OSError :
            print("failed",port, file=f)

结果如下:

...
...
succeeded 1131
succeeded 1132
failed 1133
failed 1134
failed 1135
...
...
failed 1631
failed 1632
succeeded 1633
succeeded 1634
succeeded 1635
...
...
succeeded 1731
succeeded 1732
succeeded 1733
failed 1734
failed 1735
...
...
failed 1832
failed 1833
succeeded 1834
succeeded 1835
...
...

有好几个端口长时间无法打开。失败间隔的长度为 500 或 100。我对其中一些进行了采样,但没有一个显示在 netstat 中。超过某个点(在本例中为 2443)的端口没有问题。在边界附近没有发现任何进程。重启后,这些端口号保持不变。

这是我尝试过的:

  1. 重启
  2. 禁用防火墙
  3. 以管理员身份运行
  4. 在 wifi 和 lan 之间切换
  5. 使用重置网络netsh winsock reset
  6. 重置本地路由表route -f
  7. 按照建议禁用 Internet 连接共享 (ICS) 服务这个问题

以上方法均无效。

相关内容