From fefffbc9451499013b7af2a15fac0ccc3b394364 Mon Sep 17 00:00:00 2001
From: wxr <464027401@qq.com>
Date: 星期一, 15 四月 2024 16:31:25 +0800
Subject: [PATCH] 去掉Siri先
---
HDL_ON/DAL/DriverLayer/UdpSocket.cs | 350 ++++++++++++++++++++++++++++++++--------------------------
1 files changed, 192 insertions(+), 158 deletions(-)
diff --git a/HDL_ON/DAL/DriverLayer/UdpSocket.cs b/HDL_ON/DAL/DriverLayer/UdpSocket.cs
index e358428..f6f9c40 100644
--- a/HDL_ON/DAL/DriverLayer/UdpSocket.cs
+++ b/HDL_ON/DAL/DriverLayer/UdpSocket.cs
@@ -4,31 +4,31 @@
namespace HDL_ON.DriverLayer
{
- public class UdpSocket
- {
- static UdpSocket _busSocket;
- public static UdpSocket _BusSocket
+ public class UdpSocket
+ {
+ static UdpSocket _busSocket;
+ public static UdpSocket _BusSocket
{
get
{
- if(_busSocket == null)
+ if (_busSocket == null)
{
- _busSocket = new UdpSocket();
+ _busSocket = new UdpSocket();
}
- return _busSocket;
+ return _busSocket;
}
}
- //鏈湴Socket
- private Socket busSocket;
- public int Port = 0;
- /// <summary>
- /// 鍚姩Socket鎺ユ敹鍜屽彂閫佸姛鑳�
- /// </summary>
- public void Start (int port = 0)
+ //鏈湴Socket
+ private Socket busSocket;
+ public int Port = 0;
+ /// <summary>
+ /// 鍚姩Socket鎺ユ敹鍜屽彂閫佸姛鑳�
+ /// </summary>
+ public void Start(int port = 0)
{
- if (IsRunning)
- {
+ if (IsRunning)
+ {
if (port == Port)
{
return;
@@ -38,157 +38,191 @@
busSocket.Close();
}
}
- if (port != 0)
- Port = port;
- if (Port == 0)
- return;
+ if (port != 0)
+ Port = port;
+ if (Port == 0)
+ return;
- busSocket = new Socket (AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
- busSocket.EnableBroadcast = true;
- try {
- busSocket.Bind(new IPEndPoint(IPAddress.Any, Port));
+ try
+ {
+ busSocket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
+ busSocket.EnableBroadcast = true;
+ }catch(Exception ex)
+ {
+ MainPage.Log("Socket 寮傚父 : " + ex.Message);
+ }
+ try
+ {
+ busSocket.Bind(new IPEndPoint(IPAddress.Any, Port));
- busSocket.SetSocketOption(SocketOptionLevel.IP, SocketOptionName.AddMembership, new MulticastOption(IPAddress.Parse("239.0.168.188")));
- }
- catch{
+ busSocket.SetSocketOption(SocketOptionLevel.IP, SocketOptionName.AddMembership, new MulticastOption(IPAddress.Parse("239.0.168.188")));
+ relinkCount = 0;
+ }
+ catch (Exception ex)
+ {
+ MainPage.Log($"udp port bind error : {ex.Message}");
+
busSocket = null;
return;
}
asyncBeginReceive();
- MainPage.Log ($"udp port : {port}");
+ MainPage.Log($"udp port : {port}");
}
- /// <summary>
- /// 鍋滄Socket
- /// </summary>
- public void Stop()
- {
- if (!IsRunning)
- {
- return;
- }
- try
- {
- busSocket.Close();
- }
- catch { }
- busSocket = null;
- MainPage.Log("Socket鍏抽棴");
- }
-
- /// <summary>
- /// 褰撳墠鐨凷ocket鏄惁杩愯
- /// </summary>
- public bool IsRunning
- {
- get
- {
- return null == busSocket ? false : true;
- }
- }
-
- /// <summary>
- /// 寮�濮嬪紓姝ユ帴鏀舵暟鎹�
- /// </summary>
- private void asyncBeginReceive()
- {
- if (!IsRunning)
- {
- return;
- }
-
- 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>
- /// 寮傛鎺ユ敹鏁版嵁缁撴潫
- /// </summary>
- /// <param name="iar"></param>
- private void asyncEndReceive(IAsyncResult iar)
- {
- if (!IsRunning)
- {
- return;
- }
- try
- {
- if (busSocket == null)
- {
- return;
- }
- asyncBeginReceive();
- Packet packet = (Packet)iar.AsyncState;
- int len = busSocket.EndReceiveFrom(iar, ref packet.RemoteEndPoint);
-
- byte[] bytes = packet.Bytes;
- packet.Bytes = new byte[len];
- Array.Copy(bytes, 0, packet.Bytes, 0, packet.Bytes.Length);
-
- //MainPage.Log($"鎺ユ敹{packet.RemoteEndPoint}鏁版嵁");
- //mqtt杩炴帴鏁版嵁璇诲彇 A鍗忚缃戠粶璁惧淇℃伅璇诲彇鍥炲 澶勭悊
- if (((IPEndPoint)packet.RemoteEndPoint).Port == 8585)
- {
- Control.Ins.ConvertReceiveData(bytes, ((IPEndPoint)packet.RemoteEndPoint).Address.ToString());
- }
- else if (((IPEndPoint)packet.RemoteEndPoint).Port == 6000)//澶勭悊bus 6000绔彛鐨勬暟鎹�
- {
- packet.Manager();
- }
-
- }
- catch (Exception ex)
- {
- MainPage.Log($"寮傛鎺ユ敹鏁版嵁缁撴潫 {ex.Message},{((Packet)iar.AsyncState).Bytes}");
- }
- }
-
- /// <summary>
- /// 寮傛鍙戦�佹暟鎹�
- /// </summary>
- /// <param name="tempPacket"></param>
- public void AsyncBeginSend(Packet tempPacket)
- {
- try
- {
- if (!IsRunning)
- {
- tempPacket.HaveSendCount++;
- return;
- }
- tempPacket.FlagDateTime = System.DateTime.Now;
- tempPacket.HaveSendCount++;
- busSocket.BeginSendTo(tempPacket.Bytes, 0, tempPacket.Bytes.Length, SocketFlags.None, tempPacket.RemoteEndPoint, new AsyncCallback(asyncEndSend), tempPacket);
- }
- catch (Exception ex)
- {
- MainPage.Log($"AsyncBeginSend error {ex.Message}");
- }
- }
-
- /// <summary>
- /// 寮傛鍙戦�佹暟鎹粨鏉�
- /// </summary>
- /// <param name="iar"></param>
- private void asyncEndSend(IAsyncResult iar)
- {
- Packet tempUDPPacketBuffer = (Packet)iar.AsyncState;
- try
- {
- int bytesSent = busSocket.EndSendTo(iar);
- }
- catch {
-
+ /// <summary>
+ /// 鍋滄Socket
+ /// </summary>
+ public void Stop()
+ {
+ if (busSocket == null)
+ {
+ return;
}
- }
- }
+ if (!IsRunning)
+ {
+ return;
+ }
+ try
+ {
+ busSocket.Close();
+ relinkCount = 0;
+ }
+ catch { }
+ busSocket = null;
+ MainPage.Log("Socket鍏抽棴");
+ }
+
+ /// <summary>
+ /// 褰撳墠鐨凷ocket鏄惁杩愯
+ /// </summary>
+ public bool IsRunning
+ {
+ get
+ {
+ return null == busSocket ? false : true;
+ }
+ }
+
+ /// <summary>
+ /// 寮�濮嬪紓姝ユ帴鏀舵暟鎹�
+ /// </summary>
+ private void asyncBeginReceive()
+ {
+ if (!IsRunning)
+ {
+ return;
+ }
+ if (busSocket == null)
+ {
+ return;
+ }
+
+ 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);
+ Console.WriteLine("asyncBeginReceive " + relinkCount);
+ if (relinkCount == 0)
+ {
+ relinkCount = 1;
+ asyncBeginReceive();
+ }
+ Console.WriteLine($"asyncBeginReceive {e.Message}");
+ }
+ }
+ /// <summary>
+ /// 閲嶈繛娆℃暟
+ /// </summary>
+ private int relinkCount = 0;
+
+
+
+ /// <summary>
+ /// 寮傛鎺ユ敹鏁版嵁缁撴潫
+ /// </summary>
+ /// <param name="iar"></param>
+ private void asyncEndReceive(IAsyncResult iar)
+ {
+ if (!IsRunning)
+ {
+ return;
+ }
+ try
+ {
+ if (busSocket == null)
+ {
+ return;
+ }
+ asyncBeginReceive();
+ Packet packet = (Packet)iar.AsyncState;
+ int len = busSocket.EndReceiveFrom(iar, ref packet.RemoteEndPoint);
+
+ byte[] bytes = packet.Bytes;
+ packet.Bytes = new byte[len];
+ Array.Copy(bytes, 0, packet.Bytes, 0, packet.Bytes.Length);
+
+ //MainPage.Log($"鎺ユ敹{packet.RemoteEndPoint}鏁版嵁");
+ //mqtt杩炴帴鏁版嵁璇诲彇 A鍗忚缃戠粶璁惧淇℃伅璇诲彇鍥炲 澶勭悊
+ if (((IPEndPoint)packet.RemoteEndPoint).Port == 8585)
+ {
+ Control.Ins.ConvertReceiveData(bytes, ((IPEndPoint)packet.RemoteEndPoint).Address.ToString());
+ }
+ else if (((IPEndPoint)packet.RemoteEndPoint).Port == 6000)//澶勭悊bus 6000绔彛鐨勬暟鎹�
+ {
+ packet.Manager();
+ }
+
+ }
+ catch (Exception ex)
+ {
+ MainPage.Log($"寮傛鎺ユ敹鏁版嵁缁撴潫 {ex.Message},{((Packet)iar.AsyncState).Bytes}");
+ }
+ }
+
+ /// <summary>
+ /// 寮傛鍙戦�佹暟鎹�
+ /// </summary>
+ /// <param name="tempPacket"></param>
+ public void AsyncBeginSend(Packet tempPacket)
+ {
+ try
+ {
+ if (!IsRunning)
+ {
+ tempPacket.HaveSendCount++;
+ return;
+ }
+ tempPacket.FlagDateTime = System.DateTime.Now;
+ tempPacket.HaveSendCount++;
+ busSocket.BeginSendTo(tempPacket.Bytes, 0, tempPacket.Bytes.Length, SocketFlags.None, tempPacket.RemoteEndPoint, new AsyncCallback(asyncEndSend), tempPacket);
+ }
+ catch (Exception ex)
+ {
+ MainPage.Log($"AsyncBeginSend error {ex.Message}");
+ }
+ }
+
+ /// <summary>
+ /// 寮傛鍙戦�佹暟鎹粨鏉�
+ /// </summary>
+ /// <param name="iar"></param>
+ private void asyncEndSend(IAsyncResult iar)
+ {
+ Packet tempUDPPacketBuffer = (Packet)iar.AsyncState;
+ try
+ {
+ int bytesSent = busSocket.EndSendTo(iar);
+ }
+ catch
+ {
+
+ }
+ }
+ }
}
\ No newline at end of file
--
Gitblit v1.8.0