Réduction des délais d'expiration de connexion au socket
La connexion à un serveur distant hors ligne ou qui ne répond pas peut entraîner de longs délais d'attente, ce qui nuit aux performances des applications. Cet article explore les techniques permettant de minimiser ces délais et d'améliorer les tentatives de connexion.
Une stratégie très efficace consiste à utiliser la méthode BeginConnect
asynchrone. Cette méthode initie la connexion sans bloquer le thread principal, renvoyant un objet IAsyncResult
. La fonction WaitOne
au sein de cet objet permet de spécifier un délai d'attente (en millisecondes) pour la tentative de connexion.
Voici un exemple :
<code class="language-csharp">Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); // Set a 5-second timeout IAsyncResult result = socket.BeginConnect(sIP, iPort, null, null); bool success = result.AsyncWaitHandle.WaitOne(5000, true); if (socket.Connected) { socket.EndConnect(result); } else { // Handle connection failure socket.Close(); throw new ApplicationException("Connection to server failed."); }</code>
Ce code définit un délai d'attente de 5 secondes. Si la connexion n'est pas établie dans ce délai, WaitOne
renvoie false
, signalant un échec de connexion. Cette méthode fournit un contrôle granulaire sur le comportement du délai d'attente, optimisant les tentatives de connexion en fonction des besoins de votre application.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!