2015-03-08 30 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

相關問題