2017-10-13 126 views
0

我有一個列表private List<ServerClient> clients;並開始監聽功能:有多少個客戶端可以同時收聽TcpListener?

private void StartListening() 
{ 
    server.BeginAcceptTcpClient (AcceptTcpClient,server); 
} 

private void AcceptTcpClient(IAsyncResult ar) 
{ 
    TcpListener listener = (TcpListener)ar.AsyncState; 

    clients.Add (new ServerClient (listener.EndAcceptTcpClient (ar))); 
    StartListening(); 
} 

因此,這個簡單的網絡監聽器......有多少客戶端可以在同一時間的TcpListener聽?

+0

你的問題和你的標題要求完全不同的東西。我想標題是**而不是**你想問什麼。 –

+0

順便說一句:顯然它是~4000整個計算機([來源](http://smallvoid.com/article/winnt-tcpip-max-limit.html))。確切的數字取決於你問誰,但在此之前你可能會遇到不同的限制(RAM,CPU)。 –

+0

只要您的客戶端連接到不同的端口,您可以繼續使用,直到達到操作系統強制限制以防止資源匱乏,則連接數沒有內置C#限制 – mnistic

回答

0

TcpClient實際上並不使用TcpListener在所有。 TcpListener只是「接待員接聽電話,轉接電話」。

一旦TcpClient通過調用EndAcceptTcpClient,或AcceptTcpClient創建時,TcpClientTcpListener完全斷開,它可以繼續服務請求的數量不受限制。

只要TcpClient資源被正確釋放回操作系統(通過調用Dispose),單個TcpListener就可以爲每個傳入連接創建一個TcpClient

相關問題