From 4c40f503acf2bcf90d294cc439ef46ba259b9c60 Mon Sep 17 00:00:00 2001
From: 黄学彪 <hxb@hdlchina.com.cn>
Date: 星期一, 02 十二月 2019 09:27:46 +0800
Subject: [PATCH] 新版本,如果 IOS 编译报错,先注释掉

---
 ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlWifiLogic.cs |  203 ++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 201 insertions(+), 2 deletions(-)

diff --git a/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlWifiLogic.cs b/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlWifiLogic.cs
index d78f64a..b73cdc7 100755
--- a/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlWifiLogic.cs
+++ b/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlWifiLogic.cs
@@ -1,5 +1,6 @@
 锘縰sing System;
 using System.Collections.Generic;
+using System.Security.Cryptography;
 using System.Text;
 
 namespace Shared.Phone.UserCenter
@@ -31,6 +32,35 @@
         }
 
         /// <summary>
+        /// 褰撳墠Wifi鐨処p鍦板潃
+        /// </summary>
+        public string IpAddress
+        {
+            get
+            {
+                var temp = new Shared.Net.NetWiFi();
+                return temp.GetIPAddress();
+            }
+        }
+
+        /// <summary>
+        /// 褰撳墠鏄惁鏄綉鍏崇儹鐐�
+        /// </summary>
+        public bool IsGatewayHotspot
+        {
+            get
+            {
+                string myId = this.SSID;
+
+                if (myId.StartsWith("hdlZigbeeGW") == true)
+                {
+                    return true;
+                }
+                return false;
+            }
+        }
+
+        /// <summary>
         /// 褰撳墠wifi鐨凷SID,涔熷彨Wifi鐨勫悕瀛�(鍙栦笉鍒版椂,浼氳繑鍥瀗ull)
         /// </summary>
         public string SSID
@@ -54,9 +84,9 @@
                 {
                     System.Threading.Thread.Sleep(50);
                     count++;
-                    if (count == 60)
+                    if (count == 20)
                     {
-                        //3绉掕秴鏃�
+                        //1绉掕秴鏃�
                         return null;
                     }
                 }
@@ -75,6 +105,175 @@
         private Com.Mediatek.Elian.ElianNative hdlWiFi = null;
 #endif
 
+        /// <summary>
+        /// TCP鍗忚
+        /// </summary>
+        private System.Net.Sockets.TcpClient tcpClient = null;
+        /// <summary>
+        /// 閾炬帴娴佸璞�
+        /// </summary>
+        private System.Net.Sockets.NetworkStream networkStream = null;
+        /// <summary>
+        /// Ap妯″紡缃戝叧杩斿洖鐨勭閽�
+        /// </summary>
+        private string randDesKey = null;
+
+        #endregion
+
+        #region 鈻� Ap妯″紡鐨凾CP閾炬帴____________________
+
+        /// <summary>
+        /// 鎵撳紑Ap妯″紡鐨凾CP閾炬帴(鏈夐敊璇椂锛岀洿鎺ヨ繑鍥為敊璇秷鎭�傛病鏈夐敊璇椂锛岃繑鍥瀗ull)
+        /// </summary>
+        /// <returns></returns>
+        public string StartApTcpConnection()
+        {
+            try
+            {
+                //TCP杩炴帴
+                tcpClient = new System.Net.Sockets.TcpClient();
+                tcpClient.Connect("192.168.8.1", 5000);
+                networkStream = tcpClient.GetStream();
+                //鍔犲瘑鏁版嵁
+                string sendDataMsg = "hdl1985.";
+                string DefaultdesKey = "hdl1985.";
+                //44bytes 鍔犲瘑鏁版嵁 DES鍔犲瘑 base64瀵嗘枃
+                var sendData = Encoding.UTF8.GetBytes(DesEncrypt(sendDataMsg, DefaultdesKey));
+                //灏嗘暟鎹啓鍏ョ綉缁滄祦
+                networkStream.Write(sendData, 0, sendData.Length);
+
+                System.Threading.Thread.Sleep(500);
+                //2.鎺ユ敹鐘舵��,闀垮害<1024瀛楄妭
+                byte[] bytes = new Byte[1024];
+                int length = networkStream.Read(bytes, 0, bytes.Length);
+                if (length == 0)
+                {
+                    //閫氫俊閾炬帴澶辫触
+                    return Language.StringByID(R.MyInternationalizationString.uCommunicationLinkFail);
+                }
+                string data = Encoding.UTF8.GetString(bytes, 0, length);
+                //缃戝叧杩斿洖鐨勭閽�
+                this.randDesKey = DESDecrypt(data, DefaultdesKey);
+
+                return null;
+            }
+            catch (Exception ex)
+            {
+                HdlLogLogic.Current.WriteLog(ex);
+                this.CloseApTcpConnection();
+                //閫氫俊閾炬帴澶辫触
+                return Language.StringByID(R.MyInternationalizationString.uCommunicationLinkFail);
+            }
+        }
+
+        /// <summary>
+        /// Ap妯″紡 鍙戦�佸瘑鐮佸埌瀹跺涵鐨勮矾鐢卞櫒
+        /// </summary>
+        /// <param name="ssid"></param>
+        /// <param name="password"></param>
+        /// <returns></returns>
+        public bool SendApHomeWifiPassword(string ssid, string password)
+        {
+            try
+            {
+                //鍔犲瘑鏁版嵁
+                string data2 = "ssid:" + ssid + "," + "pwd:" + password;
+                var sendData2 = Encoding.UTF8.GetBytes(DesEncrypt(data2, randDesKey));
+                //灏嗘暟鎹啓鍏ョ綉缁滄祦
+                networkStream.Write(sendData2, 0, sendData2.Length);
+                return true;
+            }
+            catch (Exception ex)
+            {
+                HdlLogLogic.Current.WriteLog(ex);
+                return false;
+            }
+        }
+
+        /// <summary>
+        /// 鍏抽棴Ap妯″紡鐨則cp閾炬帴
+        /// </summary>
+        public void CloseApTcpConnection()
+        {
+            try
+            {
+                //鍏抽棴瀹㈡埛绔�
+                tcpClient?.Close();
+                tcpClient = null;
+                networkStream = null;
+                randDesKey = null;
+            }
+            catch (Exception ex)
+            {
+                HdlLogLogic.Current.WriteLog(ex);
+            }
+        }
+
+        #endregion
+
+        #region 鈻� 鍔犲瘑瑙e瘑___________________________
+
+        /// <summary>
+        /// //鍔犲瘑鏁版嵁
+        /// </summary>
+        /// <param name="pToDesEncrypt"></param>
+        /// <param name="sKey">DES绉橀挜</param>
+        /// <returns></returns>
+        private string DesEncrypt(string pToDesEncrypt, string sKey)
+        {
+            // 鍒涘缓des鍔犲瘑娌�
+            using (DESCryptoServiceProvider des = new DESCryptoServiceProvider())
+            {
+                // 寰楀埌UTF-8鐨勬暟鎹簮
+                byte[] inputByteArray = Encoding.UTF8.GetBytes(pToDesEncrypt);
+                // 璁剧疆key鍜宨v瀵嗛挜
+                des.Key = ASCIIEncoding.ASCII.GetBytes(sKey);
+                des.IV = ASCIIEncoding.ASCII.GetBytes(sKey);
+                //鐢变簬java鏄娇鐢ㄩ粯璁ゅ姞瀵嗘ā寮忥紝C#榛樿鏄疌BC锛岄渶瑕佷慨鏀逛负ECB
+                des.Mode = CipherMode.CBC;
+                des.Padding = PaddingMode.PKCS7;
+                // 鍒涘缓鏁版嵁娴佸苟杩涜鍔犲瘑
+                var ms = new System.IO.MemoryStream();
+                using (CryptoStream cs = new CryptoStream(ms, des.CreateEncryptor(), CryptoStreamMode.Write))
+                {
+                    cs.Write(inputByteArray, 0, inputByteArray.Length);
+                    cs.FlushFinalBlock();
+                    cs.Close();
+                }
+                // 鍏抽棴鏁版嵁娴�
+                ms.Close();
+                return Convert.ToBase64String(ms.ToArray());//base64瀵嗘枃
+            }
+        }
+
+        /// <summary>
+        /// 瑙e瘑
+        /// </summary>
+        /// <param name="pToDecrypt"></param>
+        /// <param name="key">瑙e瘑瀵嗗寵</param>
+        /// <returns></returns>
+        private string DESDecrypt(string pToDecrypt, string key = null)
+        {
+            byte[] inputByteArray = Convert.FromBase64String(pToDecrypt);
+            using (DESCryptoServiceProvider des = new DESCryptoServiceProvider())
+            {
+
+                des.Key = ASCIIEncoding.ASCII.GetBytes(key);
+                des.IV = ASCIIEncoding.ASCII.GetBytes(key);
+
+                var ms = new System.IO.MemoryStream();
+                using (CryptoStream cs = new CryptoStream(ms, des.CreateDecryptor(), CryptoStreamMode.Write))
+                {
+                    cs.Write(inputByteArray, 0, inputByteArray.Length);
+                    cs.FlushFinalBlock();
+                    cs.Close();
+                }
+                string str = Encoding.UTF8.GetString(ms.ToArray());
+                ms.Close();
+                return str;
+            }
+        }
+
         #endregion
 
         #region 鈻� 涓�鑸柟娉昣__________________________

--
Gitblit v1.8.0