| | |
| | | /// <summary> |
| | | /// 是否正在搜索网关 |
| | | /// </summary> |
| | | public static bool IsSearchingGateway = false;
|
| | | public static bool IsSearchingGateway = false; |
| | | /// <summary>
|
| | | /// 发送的时间间隔(单位:秒)
|
| | | /// </summary> |
| | |
| | | //局域网能够广播得到网关
|
| | | ZbGateway.IsRemote = false;
|
| | | //当网关的连接方式改变时,记录当前的连接方式
|
| | | Shared.Phone.HdlGatewayLogic.Current.CheckGatewayByConnectChanged(Shared.Phone.GatewayConnectMode.WIFI);
|
| | | Shared.Phone.UserCenter.HdlGatewayLogic.Current.CheckGatewayByConnectChanged(Shared.Phone.UserCenter.GatewayConnectMode.WIFI);
|
| | | }
|
| | | else
|
| | | {
|
| | |
| | | //局域网广播不到网关
|
| | | ZbGateway.IsRemote = true;
|
| | | //当网关的连接方式改变时,记录当前的连接方式
|
| | | Shared.Phone.HdlGatewayLogic.Current.CheckGatewayByConnectChanged(Shared.Phone.GatewayConnectMode.Remote);
|
| | | Shared.Phone.UserCenter.HdlGatewayLogic.Current.CheckGatewayByConnectChanged(Shared.Phone.UserCenter.GatewayConnectMode.Remote);
|
| | | } |
| | | } |
| | | catch { } |
| | |
| | | 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) |
| | | { |
| | |
| | | listReceiveIP.Add(ipAddress); |
| | | } |
| | | //2020.08.07追加:即使空的住宅id也建立链接,对应手动恢复网关出厂设置时,因为没有解绑,但是住宅id为空的问题 |
| | | else if (Shared.Phone.HdlGatewayLogic.Current.HomeIdIsEmpty(homeID) == true)
|
| | | else if (Shared.Phone.UserCenter.HdlGatewayLogic.Current.HomeIdIsEmpty(homeID) == true)
|
| | | {
|
| | | listReceiveIP.Add(ipAddress);
|
| | | } |
| | |
| | | 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"); |
| | |
| | | }
|
| | |
|
| | | //测试能否广播得到网关,通常情况下不检测
|
| | | 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;
|
| | | }
|
| | | }
|
| | | } |
| | |
| | | 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);
|
| | | } |
| | | } |
| | | } |
| | |
| | | } |
| | | |
| | | //获取手机的wifi地址 |
| | | #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") |
| | | { |
| | |
| | | /// 异步发送数据 |
| | | /// </summary> |
| | | /// <param name="tempPacket"></param> |
| | | public static void BeginSend(IPEndPoint iPEndPoint, byte[] bytes) |
| | | public static void BeginSend(System.Net.IPEndPoint iPEndPoint, byte[] bytes) |
| | | { |
| | | try |
| | | { |
| | | if (Start() == false)
|
| | | {
|
| | | //调试用 |
| | | if (Shared.Phone.HdlUserCenterResourse.HideOption.WriteSocketReceiveDataToFile == 1) |
| | | if (Shared.Phone.UserCenter.UserCenterResourse.HideOption.WriteSocketReceiveDataToFile == 1) |
| | | { |
| | | Shared.Phone.HdlLogLogic.Current.WriteLog(3, "udp New不起来"); |
| | | 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);
|
| | | }
|
| | | } |
| | | } |