From 25429f085093d89d543a0b90e30d0d62d1b7dac9 Mon Sep 17 00:00:00 2001
From: hxb <hxb@hdlchina.com.cn>
Date: 星期二, 30 八月 2022 09:37:38 +0800
Subject: [PATCH] 合并了IOS的代码

---
 ZigbeeApp/Shared/Phone/ZigBee/Common/Application.cs |   88 +++++++++++++++++++++++++++++--------------
 1 files changed, 59 insertions(+), 29 deletions(-)

diff --git a/ZigbeeApp/Shared/Phone/ZigBee/Common/Application.cs b/ZigbeeApp/Shared/Phone/ZigBee/Common/Application.cs
index 1e13399..d5f60c1 100755
--- a/ZigbeeApp/Shared/Phone/ZigBee/Common/Application.cs
+++ b/ZigbeeApp/Shared/Phone/ZigBee/Common/Application.cs
@@ -18,7 +18,7 @@
         /// <summary>
         /// 鏄惁姝e湪鎼滅储缃戝叧
         /// </summary>
-        public static bool IsSearchingGateway = false;
+        public static bool IsSearchingGateway = false;
         /// <summary>
         /// 鍙戦�佺殑鏃堕棿闂撮殧(鍗曚綅:绉�)
         /// </summary>
@@ -69,6 +69,7 @@
             new System.Threading.Thread(() =>
             {
                 var broadBytes = new byte[44];
+                var waitCount = 0;
 
                 while (true)
                 {
@@ -110,17 +111,25 @@
 
                         if (listReceiveIP.Count > 0)
                         {
+                            waitCount = 0;
                             //灞�鍩熺綉鑳藉骞挎挱寰楀埌缃戝叧
                             ZbGateway.IsRemote = false;
                             //褰撶綉鍏崇殑杩炴帴鏂瑰紡鏀瑰彉鏃�,璁板綍褰撳墠鐨勮繛鎺ユ柟寮�
-                            Shared.Phone.HdlGatewayLogic.Current.CheckGatewayByConnectChanged(Shared.Phone.GatewayConnectMode.WIFI);
+                            Shared.Phone.UserCenter.HdlGatewayLogic.Current.CheckGatewayByConnectChanged(Shared.Phone.UserCenter.GatewayConnectMode.WIFI);
                         }
                         else
                         {
+                            waitCount++;
+                            if (waitCount >= 2)
+                            {
+                                //涓ゆ閮芥悳涓嶅埌,鎵嶆爣璁颁负杩滅▼
+                                continue;
+                            }
+                            waitCount = 0;
                             //灞�鍩熺綉骞挎挱涓嶅埌缃戝叧
                             ZbGateway.IsRemote = true;
                             //褰撶綉鍏崇殑杩炴帴鏂瑰紡鏀瑰彉鏃�,璁板綍褰撳墠鐨勮繛鎺ユ柟寮�
-                            Shared.Phone.HdlGatewayLogic.Current.CheckGatewayByConnectChanged(Shared.Phone.GatewayConnectMode.Remote);
+                            Shared.Phone.UserCenter.HdlGatewayLogic.Current.CheckGatewayByConnectChanged(Shared.Phone.UserCenter.GatewayConnectMode.Remote);
                         }
                     }
                     catch { }
@@ -150,7 +159,7 @@
                             System.Threading.Thread.Sleep(500);
                             continue;
                         }
-                        var ipEndPoint = new System.Net.IPEndPoint(0, 0);
+                        var ipEndPoint = new System.Net.IPEndPoint(IPAddress.Any, 0);
                         var bytes = FindGateWaySocket.udpClient.Receive(ref ipEndPoint);
                         if (bytes.Length > 43 && bytes[43] == 0xA2)
                         {
@@ -191,7 +200,7 @@
                                     listReceiveIP.Add(ipAddress);
                                 }
                                 //2020.08.07杩藉姞:鍗充娇绌虹殑浣忓畢id涔熷缓绔嬮摼鎺�,瀵瑰簲鎵嬪姩鎭㈠缃戝叧鍑哄巶璁剧疆鏃�,鍥犱负娌℃湁瑙g粦,浣嗘槸浣忓畢id涓虹┖鐨勯棶棰�
-                                else if (Shared.Phone.HdlGatewayLogic.Current.HomeIdIsEmpty(homeID) == true)
+                                else if (Shared.Phone.UserCenter.HdlGatewayLogic.Current.HomeIdIsEmpty(homeID) == true)
                                 {
                                     listReceiveIP.Add(ipAddress);
                                 }
@@ -201,17 +210,17 @@
                             if (gateWay == null)
                             {
                                 //鍒锋柊缃戝叧鐨勫湪绾挎椂闂寸偣
-                                Shared.Phone.HdlGatewayLogic.Current.RefreshGatewayOnlineTime(zbGateWay.GwId);
+                                Shared.Phone.UserCenter.HdlGatewayLogic.Current.RefreshGatewayOnlineTime(zbGateWay.GwId);
 
                                 ZbGateway.GateWayList.Add(zbGateWay);
                                 await zbGateWay.StartLocalMqtt(ipAddress);
                             }
                             else
-                            {
-                                gateWay.IsVirtual = false;
+                            {
                                 //鍒锋柊缃戝叧鐨勫湪绾挎椂闂寸偣
-                                Shared.Phone.HdlGatewayLogic.Current.RefreshGatewayOnlineTime(gateWay.GwId);
+                                Shared.Phone.UserCenter.HdlGatewayLogic.Current.RefreshGatewayOnlineTime(gateWay.GwId);
 
+                                gateWay.IsVirtual = false;
                                 if (gateWay.GwIP != ipAddress)
                                 {
                                     await gateWay.DisConnectLocalMqttClient("2");
@@ -246,23 +255,23 @@
                             }
 
                             //娴嬭瘯鑳藉惁骞挎挱寰楀埌缃戝叧,閫氬父鎯呭喌涓嬩笉妫�娴�
-                            if (Shared.Phone.HdlUserCenterResourse.HideOption.CheckCanReceiveGateway == 1)
+                            if (Shared.Phone.UserCenter.UserCenterResourse.HideOption.CheckCanReceiveGateway == 1)
                             {
-                                if (Shared.Phone.HdlGatewayResourse.DicReceiveGatewayTest == null)
+                                if (Shared.Phone.UserCenter.UserCenterResourse.DicReceiveGatewayTest == null)
                                 {
                                     //闃叉寮傚父,铏界劧鍑犵巼寰堜綆
-                                    Shared.Phone.HdlUserCenterResourse.HideOption.CheckCanReceiveGateway = 0;
+                                    Shared.Phone.UserCenter.UserCenterResourse.HideOption.CheckCanReceiveGateway = 0;
                                     continue;
                                 }
-                                if (Shared.Phone.HdlGatewayResourse.DicReceiveGatewayTest.ContainsKey(id) == false)
+                                if (Shared.Phone.UserCenter.UserCenterResourse.DicReceiveGatewayTest.ContainsKey(id) == false)
                                 {
                                     if (gateWay == null)
                                     {
-                                        Shared.Phone.HdlGatewayResourse.DicReceiveGatewayTest[id] = zbGateWay;
+                                        Shared.Phone.UserCenter.UserCenterResourse.DicReceiveGatewayTest[id] = zbGateWay;
                                     }
                                     else
                                     {
-                                        Shared.Phone.HdlGatewayResourse.DicReceiveGatewayTest[id] = gateWay;
+                                        Shared.Phone.UserCenter.UserCenterResourse.DicReceiveGatewayTest[id] = gateWay;
                                     }
                                 }
                             }
@@ -270,20 +279,20 @@
                         else
                         {
                             //璋冭瘯鐢�
-                            if (Shared.Phone.HdlUserCenterResourse.HideOption.WriteSocketReceiveDataToFile == 1)
+                            if (Shared.Phone.UserCenter.UserCenterResourse.HideOption.WriteSocketReceiveDataToFile == 1)
                             {
                                 var data33 = Encoding.UTF8.GetString(bytes).Replace("锟�)", string.Empty).TrimStart('\0').TrimEnd('\0');
-                                Shared.Phone.HdlLogLogic.Current.WriteLog(3, data33);
+                                Shared.Phone.UserCenter.HdlLogLogic.Current.WriteLog(3, data33);
                             }
-                        }
+                        }
                         await System.Threading.Tasks.Task.Delay(20);
                     }
                     catch (Exception ex)
                     {
                         //璋冭瘯鐢�
-                        if (Shared.Phone.HdlUserCenterResourse.HideOption.WriteSocketReceiveDataToFile == 1)
+                        if (Shared.Phone.UserCenter.UserCenterResourse.HideOption.WriteSocketReceiveDataToFile == 1)
                         {
-                            Shared.Phone.HdlLogLogic.Current.WriteLog(3, "Receive寮傚父\r\n" + ex.Message);
+                            Shared.Phone.UserCenter.HdlLogLogic.Current.WriteLog(3, "Receive寮傚父\r\n" + ex.Message);
                         }
                     }
                 }
@@ -400,13 +409,29 @@
             /// 鍚姩Socket鎺ユ敹鍜屽彂閫佸姛鑳�
             /// </summary>
             /// <param name="port"></param>
-            public static void Start()
+            public static bool Start()
             {
-                if (udpClient!=null)
+                if (udpClient != null)
                 {
-                    return;
+                    return true;
                 }
-                udpClient = new UdpClient { EnableBroadcast = true };
+
+                //鑾峰彇鎵嬫満鐨剋ifi鍦板潃
+#if Android
+                var netwifi = new Shared.Net.NetWiFi();
+                string phoneIp = netwifi.GetIPAddress();
+#endif
+#if iOS
+                string phoneIp = Shared.Net.NetWiFi.GetIPAddress();
+#endif
+                //"127.0.0.1"鏄簳灞傚簱閲岄潰璁剧疆鐨勫垵濮嬮粯璁ゅ��
+                if (phoneIp != "127.0.0.1")
+                {
+                    udpClient = new UdpClient(new IPEndPoint(IPAddress.Parse(phoneIp), 7624));
+                    udpClient.EnableBroadcast = true;
+                    return true;
+                }
+                return false;
             }
 
             /// <summary>
@@ -432,23 +457,28 @@
             {
                 try
                 {
-                    if (udpClient == null)
+                    if (Start() == false)
                     {
+                        //璋冭瘯鐢�
+                        if (Shared.Phone.UserCenter.UserCenterResourse.HideOption.WriteSocketReceiveDataToFile == 1)
+                        {
+                            Shared.Phone.UserCenter.HdlLogLogic.Current.WriteLog(3, "udp New涓嶈捣鏉�");
+                        }
                         return;
                     }
                     int value = udpClient.Send(bytes, bytes.Length, iPEndPoint);
                     //璋冭瘯鐢�
-                    if (Shared.Phone.HdlUserCenterResourse.HideOption.WriteSocketReceiveDataToFile == 1)
+                    if (Shared.Phone.UserCenter.UserCenterResourse.HideOption.WriteSocketReceiveDataToFile == 1)
                     {
-                        Shared.Phone.HdlLogLogic.Current.WriteLog(3, "鍙戦�侀暱搴�(BeginSendTo)锛�" + value + "  鍙戦�佸唴瀹�:" + System.Text.Encoding.UTF8.GetString(bytes));
+                        Shared.Phone.UserCenter.HdlLogLogic.Current.WriteLog(3, "鍙戦�侀暱搴�(BeginSendTo)锛�" + value + "  鍙戦�佸唴瀹�:" + System.Text.Encoding.UTF8.GetString(bytes));
                     }
                 }
                 catch (Exception ex)
                 {
                     //璋冭瘯鐢�
-                    if (Shared.Phone.HdlUserCenterResourse.HideOption.WriteSocketReceiveDataToFile == 1)
+                    if (Shared.Phone.UserCenter.UserCenterResourse.HideOption.WriteSocketReceiveDataToFile == 1)
                     {
-                        Shared.Phone.HdlLogLogic.Current.WriteLog(3, "鍙戦�佸紓甯�(BeginSendTo)\r\n" + ex.Message);
+                        Shared.Phone.UserCenter.HdlLogLogic.Current.WriteLog(3, "鍙戦�佸紓甯�(BeginSendTo)\r\n" + ex.Message);
                     }
                 }
             }

--
Gitblit v1.8.0