歡迎您的來訪!有源碼,好建站(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

      推薦資訊

      亚洲人成网站在线观看播放动漫| 亚洲国产精品国产自在在线| 亚洲中文无码亚洲人成影院| 亚洲成a人片在线网站| 亚洲国产精华液网站w| 在线亚洲精品自拍| 亚洲中文无韩国r级电影 | 67pao强力打造67194在线午夜亚洲 | 中文字幕 亚洲 有码 在线 | 亚洲成a人片在线播放| 亚洲hairy多毛pics大全| 亚洲免费综合色在线视频| 亚洲欧好州第一的日产suv| 亚洲精品美女久久久久久久| 亚洲欧洲国产综合AV无码久久| 亚洲欧洲无码AV不卡在线| 亚洲午夜无码久久| 噜噜综合亚洲AV中文无码| 亚洲AV无码男人的天堂| 亚洲 综合 国产 欧洲 丝袜| 另类小说亚洲色图| 亚洲一区二区视频在线观看| 久久影视综合亚洲| 国产亚洲精品va在线| 亚洲AV成人片色在线观看| 亚洲人成影院在线| 亚洲成a人片在线观看中文!!!| 亚洲资源最新版在线观看| 亚洲精品无码专区在线播放| 老子影院午夜伦不卡亚洲| 亚洲精品成a人在线观看| 中文字幕精品亚洲无线码二区 | 亚洲国产精品无码一线岛国| 亚洲精品在线观看视频| 亚洲欧洲视频在线观看| 亚洲字幕AV一区二区三区四区| 色五月五月丁香亚洲综合网| 国产偷窥女洗浴在线观看亚洲| 亚洲成AV人片在| 亚洲最新中文字幕| 亚洲精品无码中文久久字幕|