From 3f87bf0ae7394cdd7d52428f1f6b4361434c7cc4 Mon Sep 17 00:00:00 2001
From: 黄学彪 <hxb@hdlchina.com.cn>
Date: 星期五, 15 五月 2020 13:28:33 +0800
Subject: [PATCH] hhhhhhhhh

---
 ZigbeeApp/Shared/Phone/ZigBee/Common/Application.cs |   39 +++++++++++++++++++++++++++++++++++++--
 1 files changed, 37 insertions(+), 2 deletions(-)

diff --git a/ZigbeeApp/Shared/Phone/ZigBee/Common/Application.cs b/ZigbeeApp/Shared/Phone/ZigBee/Common/Application.cs
index 04c6a57..c446b42 100755
--- a/ZigbeeApp/Shared/Phone/ZigBee/Common/Application.cs
+++ b/ZigbeeApp/Shared/Phone/ZigBee/Common/Application.cs
@@ -333,7 +333,7 @@
         public static class FindGateWaySocket
         {
             //鏈湴Socket
-            public static System.Net.Sockets.Socket busSocket;
+            public static Socket busSocket;
 
             /// <summary>
             /// 鍚姩Socket鎺ユ敹鍜屽彂閫佸姛鑳�
@@ -379,7 +379,7 @@
             {
                 get
                 {
-                    return null == busSocket ? false : true;
+                    return busSocket == null ? false : true;
                 }
             }
 
@@ -391,12 +391,47 @@
             {
                 try
                 {
+                    //妫�娴嬭繛鎺ョ姸鎬�
+                    CheckConnectiton();
+
                     Start(7624);
                     busSocket.BeginSendTo(bytes, 0, bytes.Length, SocketFlags.None, iPEndPoint, new AsyncCallback(asyncEndSend), null);
                 }
                 catch { }
             }
 
+            /// <summary>
+            /// 妫�娴嬭繛鎺ョ姸鎬�
+            /// </summary>
+            private static void CheckConnectiton()
+            {
+                if (busSocket == null) { return; }
+
+                bool blockingState = busSocket.Blocking;
+                try
+                {
+                    byte[] tmp = new byte[1];
+
+                    busSocket.Blocking = false;
+                    busSocket.Send(tmp, 0, 0);
+                    //tcp杩樺湪杩炴帴鐫�
+                    busSocket.Blocking = blockingState;
+                }
+                catch (SocketException e)
+                {
+                    // 10035 == WSAEWOULDBLOCK
+                    if (e.NativeErrorCode.Equals(10035))
+                    {
+                        //Still Connected, but the Send would block
+                    }
+                    else
+                    {
+                        //tcp宸茬粡鏂紑浜嗚繛鎺�
+                        Stop();
+                    }
+                }
+            }
+
             /// <summary>
             /// 寮傛鍙戦�佹暟鎹粨鏉�
             /// </summary>

--
Gitblit v1.8.0