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