Windows 端口监听失败
在监听端口过程中,经常会遇到这样的报错
10013: An attempt was made to access a socket in a way forbidden by its access permissions [WinError 10013] 以一种访问权限不允许的方式做了一个访问套接字的尝试
通常,造成该问题的原因是端口占用,可以检查相应端口的进程并关闭。如,检查占用 1080 的应用
netstat -ano | findstr 1080
但是,很多时候下,会发现端口并未被占用,仍然报这个错误。这时大概率的原因是该端口被系统保留。
使用下面的命令,可以查看被保留的端口范围
> netsh int ipv4 show excludedportrange tcp
协议 tcp 端口排除范围
开始端口 结束端口
---------- --------
1024 1281
3945 4044
4045 4144
4145 4244
5357 5357
6070 6169
6170 6269
6270 6369
6370 6469
6470 6569
6771 6870
6871 6970
6971 7070
7071 7170
7171 7270
7571 7670
7681 7780
7781 7880
7881 7980
7981 8080
8082 8181
8182 8281
8308 8407
9001 9001
50000 50059 *
* - 管理的端口排除。
如果相应的程序(大概率是 Hyper-V)没有运行,可以使用下面的程序把 1080~1090 范围从保留中去除
netsh int ipv4 add excludedportrange tcp 1080 10
如果 Hyper-V 在运行中,则可以分别使用下面的命令开关 Hyper-V,不过一般直接关闭 Hyper-V 重启后,程序会占用对应的端口,下次再启动就不会保留用到的端口了
dism.exe /Online /Disable-Feature:Microsoft-Hyper-V dism.exe /Online /Enable-Feature:Microsoft-Hyper-V
也有人给出了如下方案:
netsh int ipv4 set dynamic tcp start=51001 num=5000 reg add HKLM\SYSTEM\CurrentControlSet\Services\hns\State /v EnableExcludedPortRange /d 0 /f netsh int ipv4 show excludedportrange protocol=tcp


中文博客导航
萌ICP备20213456号