2010-12-21 255 views
1

我努力做到以下幾點:偵聽多個TCP端口

// Create IPv4 TCP/IP sockets. 
TcpListener listener = new TcpListener(IPAddress.Any, 11000); 
TcpListener listener2 = new TcpListener(IPAddress.Any, 12000); 

// Listen for incoming connections. 
listener.Start(); 
listener2.Start(); 

第二次調用TCPListener.Start()拋出一個socketexception說,每個套接字地址的「只有一個使用(協議/網絡地址/端口)通常是允許的「。

因爲我使用不同的端口,我以爲服務器應用程序可以偵聽多個端口?

是否有另一種方法可以做到這一點?

+2

是'12000`端口免費的,當你啓動應用程序? – khachik 2010-12-21 19:11:44

回答

3

你的代碼是好的,並在我的包裝盒上工作。只有兩位聽衆成功啓動後,防火牆纔會彈出。 大家都指出,你有一個應用程序在端口12000打開。

執行netstat -a -b並查找哪個應用程序正在使用它。

例子:

TCP [::]:12000    [::]:0     LISTENING 
[services.exe] 
2

應用程序可以在任意數量的端口上設置tcp偵聽器。

正如錯誤指出的那樣,還有其他的東西在監聽特定的端口。

我的猜測是您的應用程序運行了兩次,或者您之後沒有正確清理它。請注意,您必須分別明確關閉每個已接受的連接。停止不會爲你做這件事。

參考MSDN