歡迎您的來訪!有源碼,好建站(www.bmm520.net)源碼海洋源碼網為您提供快速建站平臺.
      當前位置: 首頁 > 行業資訊 > c# .net 資料 >

      C# 實現客戶端Socket斷開后重新連接

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

       思路:使用System.Threading.Timer類每秒檢測一次是否連接,如果沒有處于連接狀態,則嘗試連接一次,如果連接失敗,則將異常信息捕捉,并記錄日志,然后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://www.bmm520.net/info/net/2021/0711/22467.html

      推薦資訊

      久久香蕉国产线看观看亚洲片| 亚洲中文字幕无码久久2017| 亚洲成A人片777777| 亚洲男人的天堂在线va拉文| 国产午夜亚洲精品不卡电影| 亚洲av日韩aⅴ无码色老头| 亚洲熟伦熟女专区hd高清| 亚洲中文字幕久久久一区| 亚洲欧洲无卡二区视頻| 亚洲精品无码久久| 韩国亚洲伊人久久综合影院| 国产亚洲漂亮白嫩美女在线| 亚洲高清最新av网站| 亚洲人成网站观看在线播放| 国产亚洲自拍一区| 亚洲精品国产精品乱码视色| 亚洲gv猛男gv无码男同短文| 亚洲视频中文字幕| 亚洲成人福利在线| 亚洲成a人片在线观看精品| 亚洲fuli在线观看| 亚洲欧美日韩国产精品一区| 精品亚洲一区二区三区在线播放| 亚洲日韩中文字幕日韩在线| 亚洲午夜国产精品无码老牛影视| 亚洲AV永久无码精品一百度影院| 日韩精品一区二区亚洲AV观看| 亚洲电影在线播放| 在线观看亚洲天天一三视| 狠狠综合久久综合88亚洲| 亚洲成Av人片乱码色午夜| 久久夜色精品国产噜噜噜亚洲AV| 亚洲成a人片在线观看中文!!!| 久久精品国产亚洲AV蜜臀色欲| 亚洲熟妇无码八V在线播放| 国产亚洲情侣久久精品| 亚洲中文字幕无码久久2017| 亚洲综合一区二区精品导航| 亚洲AV色吊丝无码| 国产精品亚洲专区无码唯爱网| 亚洲av午夜电影在线观看 |