2017-10-13 16 views
0

J'ai une Listeprivate List<ServerClient> clients; et une fonction qui va commencer l'écoute:Combien de clients peuvent écouter en même temps 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(); 
} 

Donc, cet écouteur simple réseau ... Combien de clients peuvent écouter en même temps TcpListener?

+0

Votre question et votre titre demandent des choses complètement différentes. Je suppose que le titre n'est pas ** ce que tu voulais dire. –

+0

Btw: Apparemment c'est ~ 4.000 pour l'ensemble de l'ordinateur ([Source] (http://smallvoid.com/article/winnt-tcpip-max-limit.html)). Le nombre exact dépend de qui vous demandez, mais vous rencontrerez probablement des limites différentes (RAM, CPU) avant cela. –

+0

Il n'y a pas de limite C# intégrée au nombre de connexions, tant que vos clients se connectent à des ports différents, vous pouvez continuer jusqu'à ce que vous atteigniez une limite imposée par le système d'exploitation pour éviter la famine – mnistic

Répondre

0

TcpClient ne pas réellement utiliser le TcpListener pas du tout. Le TcpListener est juste le "réceptionniste répondant au téléphone, et transférant des appels".

Une fois qu'un TcpClient est créé en appelant EndAcceptTcpClient ou AcceptTcpClient, le TcpClient est complètement déconnecté de la TcpListener, et il peut continuer à servir un nombre illimité de demandes.

Tant que TcpClient ressources sont correctement remis à l'OS (en appelant Dispose), un seul TcpListener peut créer un TcpClient pour chaque connexion entrante.