TcpClient在C#中的連接超時(shí)設(shè)置方法

c#
小樊
198
2024-08-29 20:05:33
欄目: 編程語言

在C#中,使用TcpClient類可以實(shí)現(xiàn)TCP客戶端的功能

using System;
using System.Net;
using System.Net.Sockets;

class Program
{
    static void Main(string[] args)
    {
        try
        {
            // 創(chuàng)建一個(gè)TcpClient實(shí)例
            TcpClient tcpClient = new TcpClient();

            // 設(shè)置連接超時(shí)時(shí)間(單位:毫秒)
            int timeout = 5000;

            // 異步連接服務(wù)器
            IAsyncResult result = tcpClient.BeginConnect("127.0.0.1", 8080, null, null);

            // 等待連接成功或超時(shí)
            bool success = result.AsyncWaitHandle.WaitOne(timeout);

            if (success)
            {
                Console.WriteLine("連接成功");

                // 結(jié)束異步連接
                tcpClient.EndConnect(result);

                // 這里可以添加與服務(wù)器通信的代碼

                // 關(guān)閉TcpClient
                tcpClient.Close();
            }
            else
            {
                Console.WriteLine("連接超時(shí)");

                // 取消連接
                tcpClient.Close();
            }
        }
        catch (Exception ex)
        {
            Console.WriteLine("發(fā)生異常: " + ex.Message);
        }
    }
}

在這個(gè)示例中,我們首先創(chuàng)建了一個(gè)TcpClient實(shí)例。然后,我們使用BeginConnect方法異步連接到服務(wù)器。接下來,我們使用AsyncWaitHandle.WaitOne方法等待連接成功或超時(shí)。如果連接成功,我們調(diào)用EndConnect方法結(jié)束異步連接,并繼續(xù)與服務(wù)器通信。如果連接超時(shí),我們關(guān)閉TcpClient實(shí)例并取消連接。

0