From b71dfb3ca100340005d56e1298292807da82322d Mon Sep 17 00:00:00 2001 From: wxr <464027401@qq.com> Date: 星期一, 08 六月 2020 15:04:21 +0800 Subject: [PATCH] 20200608 --- HDL_ON/DriverLayer/BusSocket.cs | 32 ++++++++++++++++++++++---------- 1 files changed, 22 insertions(+), 10 deletions(-) diff --git a/HDL_ON/DriverLayer/BusSocket.cs b/HDL_ON/DriverLayer/BusSocket.cs index e8b346c..d6a5d4d 100644 --- a/HDL_ON/DriverLayer/BusSocket.cs +++ b/HDL_ON/DriverLayer/BusSocket.cs @@ -1,6 +1,7 @@ 锘縰sing System; using System.Net.Sockets; using System.Net; +using HDL_ON.DAL.Net; //using HDL_ON.UI; namespace HDL_ON @@ -33,7 +34,10 @@ busSocket.EnableBroadcast = true; try { busSocket.Bind (new IPEndPoint (IPAddress.Any, port)); - }catch{ + + busSocket.SetSocketOption(SocketOptionLevel.IP, SocketOptionName.AddMembership, new MulticastOption(IPAddress.Parse("224.0.168.188"))); + } + catch{ busSocket = null; return; } @@ -88,17 +92,14 @@ } try { - Packet packet = new Packet (); - busSocket.BeginReceiveFrom (packet.Bytes, 0, packet.Bytes.Length, SocketFlags.None, ref packet.RemoteEndPoint, new AsyncCallback (asyncEndReceive), packet); - } catch (Exception e) { System.Threading.Thread.Sleep (1); asyncBeginReceive (); + Console.WriteLine($"asyncBeginReceive {e.Message}"); } - } /// <summary> @@ -107,7 +108,6 @@ /// <param name="iar"></param> private static void asyncEndReceive(IAsyncResult iar) { - if (!IsRunning) { return; @@ -116,16 +116,28 @@ try { asyncBeginReceive (); - Packet packet = (Packet)iar.AsyncState; - int len = busSocket.EndReceiveFrom(iar, ref packet.RemoteEndPoint); + byte[] bytes = packet.Bytes; packet.Bytes = new byte[len]; - System.Array.Copy(bytes, 0, packet.Bytes, 0, packet.Bytes.Length); + Array.Copy(bytes, 0, packet.Bytes, 0, packet.Bytes.Length); + + if (packet.RemoteEndPoint.ToString() == "172.16.2.237:6688") + { + var reString = DAL.CommonPage.MyEncodingUTF8.GetString(bytes); + var jt = Newtonsoft.Json.JsonConvert.DeserializeObject<Newtonsoft.Json.Linq.JObject>(reString); + var gateway_objects = jt.GetValue("objects").ToString(); + var jt2 = Newtonsoft.Json.JsonConvert.DeserializeObject<Newtonsoft.Json.Linq.JObject>(gateway_objects); + MqttCommon.mqttClientIP = jt2.GetValue("gateway_ip").ToString(); + MqttCommon.mqttGatewayMAC = jt2.GetValue("board_id").ToString(); + } + packet.Manager(); } - catch { } + catch (Exception ex) { + MainPage.Log($"寮傛鎺ユ敹鏁版嵁缁撴潫 {ex.Message}"); + } } /// <summary> -- Gitblit v1.8.0