Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Saya Boleh Mengoptimumkan Tamat Masa Sambungan Soket untuk Percubaan Sambungan Lebih Pantas?
Mengurangkan Kelewatan Tamat Masa Sambungan Soket
Menyambung ke pelayan jauh yang di luar talian atau tidak bertindak balas boleh menyebabkan tamat masa yang panjang, menghalang prestasi aplikasi. Artikel ini meneroka teknik untuk meminimumkan kelewatan ini dan meningkatkan percubaan sambungan.
Strategi yang sangat berkesan melibatkan penggunaan kaedah BeginConnect
tak segerak. Kaedah ini memulakan sambungan tanpa menyekat utas utama, mengembalikan objek IAsyncResult
. Fungsi WaitOne
dalam objek ini membolehkan anda menentukan tamat masa (dalam milisaat) untuk percubaan sambungan.
Ini contohnya:
<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>
Kod ini menetapkan tamat masa 5 saat. Jika sambungan tidak diwujudkan dalam masa itu, WaitOne
mengembalikan false
, menandakan kegagalan sambungan. Kaedah ini menyediakan kawalan terperinci ke atas gelagat tamat masa, mengoptimumkan percubaan sambungan berdasarkan keperluan aplikasi anda.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengoptimumkan Tamat Masa Sambungan Soket untuk Percubaan Sambungan Lebih Pantas?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!