无法在127.0.0.1适配器上打开端口2000-如何查找原因?

时间:2019-03-22 21:28:13

标签: c# windows powershell tcp tcplistener

几个月来,我一直没有运行我们开发的.NET应用程序,该应用程序上一次运行良好。同时,我已经将计算机更新为Windows 10 Pro 1809(以及在家中)。

今天,我尝试运行它,但它的运行不正常。在代码尝试在可配置端口(默认为2000)上启动TCP服务器之后,我对其进行了调试并将其范围缩小为一个异常。

以下是例外:

System.Net.Sockets.SocketException (0x80004005): An attempt was made to access a socket in a way forbidden by its access permissions

在执行以下代码时将其引发:

        listener = new TcpListener("127.0.0.1", 2000);
        listener.Start();

我没有进行正常的诊断步骤:

  • 该端口上已经有任何内容在监听吗
  • 禁用防火墙
  • 重新启用防火墙,然后删除有关应用程序和相关端口的规则
  • 启用防火墙日志记录以查看是否有拒绝它的证据

所以我很快在PowerShell脚本中对它进行了测试:

$port = 2000
$listener = new-object System.Net.Sockets.TcpListener ("127.0.0.1", $port)
try 
{
    $listener.start()    
    Write-Output "Successfully opened port $port"
}
catch 
{
    Write-Error $_          
}
finally
{
    $listener.Stop()
}

我得到几乎相同的例外: Exception calling "Start" with "0" argument(s): "An attempt was made to access a socket in a way forbidden by its access permissions"

下一步,我决定将端口更改为3000,它可以正常工作。

接下来,我将脚本修改为从12500的端口之间循环,并遇到一堆失败,包括从16572156和{{1} }到2179

下一步该去哪里寻找根本原因? Windows可以使用什么机制拒绝绑定(?)尝试?

更新

尝试过此C#应用程序,结果相同:

2279

0 个答案:

没有答案