【发布时间】:2014-03-14 12:38:51
【问题描述】:
我有一台 Windows Server 2008 机器,我无法在其上绑定到特定高端口范围的套接字,而不会收到错误 10013 (WSAEACCES)。特别是,我无法绑定到端口 62788-64764,这很不方便,因为我正在尝试启动一个配置为在该范围内的端口上运行的服务,并且我无法更改该配置。该进程从具有管理员权限的 cmd 窗口启动。-a
为什么我不能绑定到这些端口号?
我已经尝试了所有显而易见的事情:
Netstat -a 不显示在这些端口上侦听的任何进程。
使用 netsh int ipv4 show excludeportrange protocol=tcp,我验证此范围内没有任何排除端口:
开始端口结束端口 ---------- -------- 80 80 443 443 8172 8172 47001 47001
机器正在运行 DNS 服务器,因此我将 DNS SocketPoolSize 设置为零,但这不起作用。 (我什至关闭了服务器,但这也无济于事)。
我已经多次重新启动(并启动)机器,并且我已经重置了 winsock 目录(netsh winsock reset)。
我还缺少其他一些配置设置;有什么想法吗?
更新:我发现关闭 Windows 服务“Internet 连接共享”可以解决问题,尽管我仍不清楚该服务为何锁定这些特定端口。
【问题讨论】:
-
这是权限问题,而不是“正在使用的端口”。
-
是的,我明白这一点,但是什么会影响这个狭窄范围内的权限?根据 MS 文档,如果另一个进程的套接字绑定了 SO_EXCLUSIVEADDRUSE,或者以与套接字的访问权限相反的方式访问套接字,则会返回此错误。