a亚洲精品_精品国产91乱码一区二区三区_亚洲精品在线免费观看视频_欧美日韩亚洲国产综合_久久久久久久久久久成人_在线区

首頁 > 編程 > C# > 正文

C# Socket連接請求超時機制實現代碼分享

2020-01-24 03:00:47
字體:
來源:轉載
供稿:網友

.Net的System.Net.Sockets.TcpClient和System.Net.Sockets.Socket都沒有直接為Connect/BeginConnect提供超時控制機制。因此,當服務器未處于監聽狀態,或者發生網絡故障時,客戶端連接請求會被迫等待很長一段時間,直到拋出異常。默認的等待時間長達20~30s。.Net Socket庫的SocketOptionName.SendTimeout提供了控制發送數據的超時時間,但并非本文討論的連接請求的超時時間。
實現

下面是實現的關鍵代碼:

復制代碼 代碼如下:

class TimeOutSocket
{
    private static bool IsConnectionSuccessful = false;
    private static Exception socketexception;
    private static ManualResetEvent TimeoutObject = new ManualResetEvent(false);

    public static TcpClient TryConnect(IPEndPoint remoteEndPoint, int timeoutMiliSecond)
    {
        TimeoutObject.Reset();
        socketexception = null; 

        string serverip = Convert.ToString(remoteEndPoint.Address);
        int serverport = remoteEndPoint.Port;          
        TcpClient tcpclient = new TcpClient();

        tcpclient.BeginConnect(serverip, serverport,
            new AsyncCallback(CallBackMethod), tcpclient);

        if (TimeoutObject.WaitOne(timeoutMiliSecond, false))
        {
            if (IsConnectionSuccessful)
            {
                return tcpclient;
            }
            else
            {
                throw socketexception;
            }
        }
        else
        {
            tcpclient.Close();
            throw new TimeoutException("TimeOut Exception");
        }
    }
    private static void CallBackMethod(IAsyncResult asyncresult)
    {
        try
        {
            IsConnectionSuccessful = false;
            TcpClient tcpclient = asyncresult.AsyncState as TcpClient;

            if (tcpclient.Client != null)
            {
                tcpclient.EndConnect(asyncresult);
                IsConnectionSuccessful = true;
            }
        }
        catch (Exception ex)
        {
            IsConnectionSuccessful = false;
            socketexception = ex;
        }
        finally
        {
            TimeoutObject.Set();
        }
    }
}

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 欧美高清视频一区二区三区 | 亚洲视频在线播放 | 午夜视频网站 | 欧美日韩中文在线 | 91精品中文字幕一区二区三区 | 日韩欧美视频 | 久久人人爽爽爽人久久久 | 久久久久久久久久久九 | 国产精品美女视频一区二区三区 | 日韩精品视频一区二区三区 | 久久青| av网站观看 | 亚洲视频一区二区在线 | 亚洲欧美日韩精品 | 草草影院在线观看 | 国产精品久久久久婷婷二区次 | 成人h动漫免费观看网站 | 久久精品国产77777蜜臀 | 欧美在线视频一区 | 在线观看免费av网 | 国内成人精品2018免费看 | 国产精品一区二区在线观看 | 欧美与黑人午夜性猛交久久久 | 四虎网址 | 激情小视频网站 | 日韩在线 | 欧美视频在线观看一区 | 九九热精 | 日韩不卡一区二区 | 日本精品免费观看 | 日韩av免费 | 精品1区2区 | 看a网站| 国产影音先锋 | 亚洲欧美视频一区 | 成人av视 | 国产日韩欧美一区二区 | 亚洲欧美视频 | 另类免费视频 | 热久久这里只有精品 | 久久精品网 |