Un client doit créer simultanément plusieurs connexions tcp au serveur. Le code de mon serveur est ci-dessous.Plusieurs clients Tcpclient se connectent au serveur
while (_running)
{
if (!_listener.Pending())
{
Thread.Sleep(100);
continue;
}
TcpClient client = _listener.AcceptTcpClient();
}
Et le code de mon client est ci-dessous.
for (int i = 0; i < num; i++)
{
TcpClient tcp = new TcpClient();
tcp.Connect(_server);
}
La première connexion est réussie. Mais la deuxième connexion est échouée en raison de la non-réponse du serveur (En fait, le serveur écoute la connexion tcp).
Cependant, si j'ajoute Thread.Sleep(1500)
après chaque tcp.Connect(), toutes les connexions sont réussies. Mais cette situation n'est vraie que s'il y a un client et un serveur. S'il y a beaucoup de clients, comment puis-je m'assurer que chaque connexion peut être acceptée par le serveur? Aussi pourquoi je ajoute Thread.Sleep peut faire de telles connexions réussir?
Le retard dans l'acceptation des clients était dû à la perte de sommeil dans votre code, pas à toute lacune dans l'API. – EJP