2015-03-08 27 views
0

我有一个侦听TCP/IP连接的Windows服务。当我运行该服务时,出现错误“通常只允许使用每个套接字地址(协议/网络地址/端口)”。我可以在控制台应用程序中运行代码而不会出现问题。Windows TCP/IP侦听器服务“每个套接字地址(协议/网络地址/端口)通常只允许使用一个”

服务,并开始在自己的线程创建监听器:

protected override void OnStart(string[] args) 
    { 
     this.tcpListener = new TcpListener(IPAddress.Parse(IpAddress.Any), 8100); 
     this.listenThread = new Thread(new ThreadStart(ListenForClients)); 
     this.listenThread.Start(); 
    } 

启动监听器:

private void ListenForClients() 
    { 
     this.tcpListener.Start(); //<-----Produces the error 
     System.Threading.Thread.Sleep(5000); 
     this.tcpListener.Stop(); 
    } 
+0

您确定您的开发环境尚未在该端口上侦听吗?也许一个冷冻的控制台应用你停止线程并关闭端口? – 2015-03-08 21:16:32

+0

就是这样,谢谢。 – jmyns 2015-03-09 01:12:48

回答

1

我刚才测试了你的代码和它的作品在我的电脑上。 如果您想知道哪个程序在您的计算机上使用该端口,我建议您使用Microsoft提供的SysInteralSuite中的“tcpview”工具。

你可以在这里找到它。 https://technet.microsoft.com/en-us/sysinternals/bb842062.aspx

+0

我检查了netstat并没有看到正在使用的端口。这会教我一个教训,谢谢。 – jmyns 2015-03-09 01:13:56

相关问题