歡迎您的來訪!有源碼,好建站(m.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://m.bmm520.net/info/net/2021/0711/22467.html

      推薦資訊

      亚洲国产成人精品电影| 亚洲性无码av在线| 亚洲va成无码人在线观看| 久久久久亚洲av无码尤物| 中文字幕精品亚洲无线码一区应用| 性色av极品无码专区亚洲| 最新国产成人亚洲精品影院| 亚洲最大黄色网址| 夜夜亚洲天天久久| 少妇中文字幕乱码亚洲影视| 亚洲v高清理论电影| 久久夜色精品国产亚洲AV动态图 | 2019亚洲午夜无码天堂| 亚洲午夜电影在线观看高清| 亚洲的天堂av无码| 亚洲国产综合精品| 亚洲中文无码线在线观看| 亚洲av无码国产综合专区| 亚洲国产最大av| 在线亚洲高清揄拍自拍一品区| 最新亚洲精品国偷自产在线| 亚洲国产精品一区二区三区在线观看| 国产亚洲国产bv网站在线| 亚洲一卡一卡二新区无人区| 亚洲精品人成网线在线播放va| 亚洲精品久久无码av片俺去也| 国产精品无码亚洲一区二区三区| 国产精品亚洲片在线花蝴蝶| 偷自拍亚洲视频在线观看99| 亚洲日本韩国在线| 亚洲中文久久精品无码ww16| 日韩亚洲欧洲在线com91tv| 亚洲va久久久噜噜噜久久天堂| 亚洲一区精品中文字幕| 亚洲人成777在线播放| 亚洲一区二区三区国产精华液| 小说专区亚洲春色校园| 国内精品99亚洲免费高清| 亚洲成AV人片在线观看WWW| 亚洲精品在线免费观看| 亚洲AV日韩综合一区尤物|