歡迎您的來訪!有源碼,好建站(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激情亚洲男人的天堂国语| 亚洲国产精品网站久久| 亚洲精品中文字幕乱码影院| 亚洲一区二区女搞男| 亚洲精品麻豆av| 亚洲国产精品激情在线观看| 亚洲av永久中文无码精品| 亚洲中文字幕精品久久| 亚洲中文无码av永久| 亚洲理论在线观看| 亚洲成a人片在线观| 亚洲免费在线观看视频| 亚洲大片免费观看| 亚洲国产av一区二区三区丶| 亚洲国产综合自在线另类| 亚洲毛片无码专区亚洲乱| 亚洲成年人免费网站| 亚洲欧洲精品在线| 亚洲人成伊人成综合网久久| 亚洲制服丝袜一区二区三区| 亚洲色欲色欲www| 亚洲中文字幕乱码一区| 亚洲色大成网站www尤物| 亚洲国产精品精华液| 久久亚洲AV成人无码国产最大| 处破女第一次亚洲18分钟| 国产午夜亚洲精品不卡免下载| 另类小说亚洲色图| 亚洲午夜日韩高清一区| 亚洲欧洲成人精品香蕉网| 亚洲va久久久噜噜噜久久狠狠| 亚洲AV日韩AV永久无码免下载| 亚洲小视频在线观看| 亚洲黄色在线视频| 亚洲五月综合网色九月色| 亚洲欧洲专线一区| 国产精品亚洲va在线观看| AV在线亚洲男人的天堂| 日韩va亚洲va欧洲va国产| 亚洲最大成人网色| 亚洲Av无码一区二区二三区|