调用TcpListener.Start()时抛出SocketException

时间:2019-03-26 13:51:42

标签: c# .net networking

我知道已经有一个类似的问题here。但是,唯一的答案并不能解决我的问题。

这是我的代码:

TcpListener TcpListener = new TcpListener(localaddr: IPAddress.Any, port: 8080);
TcpListener.Start();

执行TcpListener.Start();给了我这个错误:

  

System.Net.Sockets.SocketException:'试图访问一个   套接字以其访问权限所禁止的方式”

我已经在防火墙内定义了入站安全规则,以使Port 8080可以公开访问(我知道通常不建议这样做,但是出于测试目的,我暂时这样做):

enter image description here

enter image description here

enter image description here

运行netstat -o时,我可以验证端口8080 没有已经建立了连接。

对于它的价值,我正在Azure虚拟机上启动TcpListener。

关于如何修复SocketException的任何建议?

更新:

运行netstat -o -n -a | findstr 0.0.0.0:8080时,看到以下结果:

  

TCP 0.0.0.0:8080 0.0.0.0:0侦听4

是否因为端口8080上已经有TcpListener监听而引发了SocketException?

我尝试通过运行TcpListener终止现有的taskkill/pid 4 /F(以查看终止后SocketException是否还会被抛出),但没有成功:

  

错误:PID为4的进程无法终止。原因:访问   被拒绝。

1 个答案:

答案 0 :(得分:0)

在尝试执行taskkill之前,PID 4真的没有设置警报铃声吗? 异常低。在我研究过的大多数Windows系统中, OS都是系统的“进程”。

很可能已经有人注册使用该端口作为URL reserved via HTTP.SYS的一部分。

如果您正在运行IIS,请查找在该端口上运行的站点。