歡迎您的來訪!有源碼,好建站(m.bmm520.net)源碼海洋源碼網(wǎng)為您提供快速建站平臺.

      C# 實現(xiàn)客戶端Socket斷開后重新連接

      時間:2021-07-11 23:00來源:未知 作者:admin 點擊:
      思路:使用System.Threading.Timer類每秒檢測一次是否連接,如果沒有處于連接狀態(tài),則嘗試連接一次,如果連接失敗,則將異常信息捕捉,并記錄日志,然后Sleep2秒,再嘗試連接,一直重復連接的步驟。 System.Threading.Timer timer = null; private void BtnC

       思路:使用System.Threading.Timer類每秒檢測一次是否連接,如果沒有處于連接狀態(tài),則嘗試連接一次,如果連接失敗,則將異常信息捕捉,并記錄日志,然后Sleep2秒,再嘗試連接,一直重復連接的步驟。

      System.Threading.Timer timer = null;

       private void BtnConnect_Click(object sender, RoutedEventArgs e)

       {

                  

                  timer = new Timer(new TimerCallback(TimerCall),null,Timeout.Infinite,1000);

                  timer.Change(0, 1000);

        }

       private void TimerCall(object obj)

       {

                  if (!IsSocketConnected(socketWatch))

                  { 

                          this.Dispatcher.Invoke(new Action(() =>

                          {

                              string connectIP = txtIP.Text;

                              string port = txtPort.Text;

       

                          try

                          {

                              socketWatch = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);

                              IPAddress address = IPAddress.Parse(connectIP);

                              socketWatch.Connect(address, int.Parse(port));

                              threadWatch = new Thread(RecMsg);

                              threadWatch.IsBackground = true;

                              threadWatch.Start();

                              }

                              catch

                              { Thread.Sleep(2000); }

                          }));

                     

                  }

              }

              private bool IsSocketConnected(Socket socket)

              {

                  lock (this)

                  {

                      bool ConnectState = true;

                      bool state = socket.Blocking;

                      try

                      {

                          byte[] temp = new byte[1];

                          socket.Blocking = false;

                          socket.Send(temp, 0, 0);

                          ConnectState = true;

                      }

                      catch (SocketException e)

                      {

                          if (e.NativeErrorCode.Equals(10035)) //仍然是connect的

                              ConnectState = true;

                          else

                              ConnectState = false;

                      }

                      finally

                      {

                          socket.Blocking = state;

                      }

                      return ConnectState;

                  }

      }

       

      (責任編輯:admin)本文地址:http://m.bmm520.net/info/net/2021/0711/22467.html

      推薦資訊

      亚洲av成人一区二区三区观看在线 | 亚洲中文字幕久久精品无码VA| 亚洲成AV人片在线观看WWW| 亚洲伊人久久综合影院| 亚洲AV无码乱码在线观看| 久久亚洲精品无码gv| 亚洲高清国产拍精品熟女| 亚洲中文字幕无码亚洲成A人片| 亚洲va成无码人在线观看| 亚洲人成免费电影| 亚洲制服丝袜在线播放| 亚洲免费在线观看视频| 亚洲av无码片区一区二区三区| 亚洲精品免费在线视频| 亚洲一区电影在线观看| 国产成人亚洲综合一区| 亚洲综合小说另类图片动图| 亚洲一本一道一区二区三区| 亚洲精品无码aⅴ中文字幕蜜桃| 亚洲狠狠婷婷综合久久蜜芽| 老牛精品亚洲成av人片| 亚洲第一区精品观看| 亚洲一级特黄大片在线观看 | 亚洲VA成无码人在线观看天堂| 亚洲高清国产拍精品26U| 久久精品国产亚洲AV果冻传媒| 亚洲精品私拍国产福利在线| 亚洲精品成人图区| 久久狠狠爱亚洲综合影院| 亚洲欧美日韩自偷自拍| 激情小说亚洲色图| 久久久久亚洲av成人无码电影 | 亚洲日产2021三区在线| 亚洲国产成人精品激情| 亚洲av日韩aⅴ无码色老头 | 全亚洲最新黄色特级网站| 亚洲日韩精品无码专区网站| 国产精品久久久亚洲| 91亚洲国产成人久久精品网站| 亚洲乱码中文字幕小综合| 亚洲精华液一二三产区|