Socket的連接超時時間?
1.使用BeginConnect方法 IAsyncResult connResult = mySocket.BeginConnect(yourAddress, yourPort, null, null); connResult.AsyncWaitHandle.WaitOne(2000, true); //等待2秒 if (!connResult.IsCompleted) { mySocket.Close(); //處理連接不成功的動作 } else { //處理連接成功的動作 } 這種方法很好的控制了連接超時時間而且代碼非常簡單,但是界面仍然會有2秒的卡死產(chǎn)生。
如果想解決該問題,則需要創(chuàng)建一個額外的線程來執(zhí)行WaitOne方法。2.使用ConnectAsync方法 SocketAsyncEventArgs e = new SocketAsyncEventArgs(); e.Completed += new EventHandler