From 2e5267b6f7fa2a2e52e53ea84d5515aece80793d Mon Sep 17 00:00:00 2001 From: Laurentiu Date: Thu, 27 Jun 2024 13:17:09 +0300 Subject: [PATCH] refactor code --- AppServer/MainForm.cs | 29 ++++--- AppServer/MulticastListener.cs | 127 +++++++++++++++++++----------- SafeMobileLIB_DLL/UdpMulticast.cs | 80 ++++++++----------- 3 files changed, 134 insertions(+), 102 deletions(-) diff --git a/AppServer/MainForm.cs b/AppServer/MainForm.cs index ca94495..930014c 100644 --- a/AppServer/MainForm.cs +++ b/AppServer/MainForm.cs @@ -1057,8 +1057,9 @@ namespace AppServer catch (Exception exe) { try - { - udp.Send(SafeMobileLib.Utils.Convert_text_For_multicast("#0.0#210#4#AppServer stoped#"), SafeMobileLib.Utils.Convert_text_For_multicast("#0.0#210#4#AppServer stoped#").Length); + { + byte[] dataToSend = Utils.Convert_text_For_multicast("#0.0#210#4#AppServer stoped#"); + udp.Send(dataToSend, dataToSend.Length); } catch (Exception ex2) { @@ -1105,8 +1106,9 @@ namespace AppServer errorOnScreen = true; error = true; try - { - udp.Send(SafeMobileLib.Utils.Convert_text_For_multicast("#0.0#210#2#Dongle missing Application server stopped#"), SafeMobileLib.Utils.Convert_text_For_multicast("#0.0#210#2#Dongle missing Application server stopped#").Length); + { + byte[] dataToSend = Utils.Convert_text_For_multicast("#0.0#210#2#Dongle missing Application server stopped#"); + udp.Send(dataToSend, dataToSend.Length); } catch (Exception ex2) { @@ -1226,8 +1228,10 @@ namespace AppServer MainForm.websocketLocationQueue.PostItem(data); - if(!sendWebsocketTimer.Enabled) + + if (!sendWebsocketTimer.Enabled) sendWebsocketTimer.Enabled = true; + if (!checkWebsocketServerStatus.Enabled) checkWebsocketServerStatus.Enabled = true; } @@ -1279,10 +1283,12 @@ namespace AppServer } try { - udp.Send(Utils.Convert_text_For_multicast($"#0.0#{Utils.enumConvertToString(MessageBusCmds.WebsocketStatusToMsgBus)}#offline#"), - Utils.Convert_text_For_multicast($"#0.0#{Utils.enumConvertToString(MessageBusCmds.WebsocketStatusToMsgBus)}#offline#").Length); - udp.Send(Utils.Convert_text_For_multicast("#0.0#210#4#Application server stopped#"), - Utils.Convert_text_For_multicast("#0.0#210#4#Application server stopped#").Length); + byte[] dataToSend = Utils.Convert_text_For_multicast($"#0.0#{Utils.enumConvertToString(MessageBusCmds.WebsocketStatusToMsgBus)}#offline#"); + udp.Send(dataToSend, dataToSend.Length); + + + dataToSend = Utils.Convert_text_For_multicast("#0.0#210#4#Application server stopped#"); + udp.Send(dataToSend, dataToSend.Length); } catch (Exception ex2) { @@ -1297,8 +1303,9 @@ namespace AppServer try { try - { - udp.Send(SafeMobileLib.Utils.Convert_text_For_multicast("#0.0#210#5#Application server restart#"), SafeMobileLib.Utils.Convert_text_For_multicast("#0.0#210#5#Application server restart#").Length); + { + byte[] dataToSend = Utils.Convert_text_For_multicast("#0.0#210#5#Application server restart#"); + udp.Send(dataToSend, dataToSend.Length); } catch (Exception ex2) { diff --git a/AppServer/MulticastListener.cs b/AppServer/MulticastListener.cs index e32fb9d..f6b9a46 100644 --- a/AppServer/MulticastListener.cs +++ b/AppServer/MulticastListener.cs @@ -606,7 +606,8 @@ namespace AppServer Utils.WriteLine("Radio disable was sent on " + sysPos.Gw_id + "." + sysPos.R_gw_id + " gateway", ConsoleColor.Cyan); //send radio disable to GW string test2 = "#150#" + dest + "#0#"; - MainForm.udp.Send(Utils.Convert_text_For_multicast("#0.0" + test2), Utils.Convert_text_For_multicast("#0.0" + test2).Length); + byte[] dataToSend = Utils.Convert_text_For_multicast("#0.0" + test2); + MainForm.udp.Send(dataToSend, dataToSend.Length); } catch (Exception ex) { @@ -726,8 +727,10 @@ namespace AppServer int unitSC_ID = DBvehInfo.getSCID(radioID3.ToString()); UnitSysPosition sysPos = DBvehInfo.getSystemPosition(unitSC_ID); string message = string.Format("Ticket no. {0} is no longer active!", dec3.delete_ticket_id); - string test1 = "#143#" + sysPos.Gw_id + "." + sysPos.R_gw_id + "." + radioID3 + "#" + message + "#" + 0 + "#"; - MainForm.udp.Send(SafeMobileLib.Utils.Convert_text_For_multicast("#0.0"+test1), SafeMobileLib.Utils.Convert_text_For_multicast("#0.0"+test1).Length); + string test1 = "#143#" + sysPos.Gw_id + "." + sysPos.R_gw_id + "." + radioID3 + "#" + message + "#" + 0 + "#"; + + byte[] dataToSend = Utils.Convert_text_For_multicast("#0.0" + test1); + MainForm.udp.Send(dataToSend, dataToSend.Length); } //send to email if was sms->email type if (dec3.isEmail) @@ -749,8 +752,9 @@ namespace AppServer UnitSysPosition sysPos = DBvehInfo.getSystemPosition(unitSC_ID); string dest = $"0.0.{radioID3}"; if (sysPos != null) dest = $"{sysPos.Gw_id}.{sysPos.R_gw_id}.{radioID3}"; - - MainForm.udp.Send(SafeMobileLib.Utils.Convert_text_For_multicast("#0.0#154#" + dest + "#"), SafeMobileLib.Utils.Convert_text_For_multicast("#0.0#154#" + dest + "#").Length); + + byte[] dataToSend = Utils.Convert_text_For_multicast("#0.0#154#" + dest + "#"); + MainForm.udp.Send(dataToSend, dataToSend.Length); } } catch (Exception ex) @@ -927,8 +931,10 @@ namespace AppServer DBtel.AddTelemetryHist(radioID, tObj.Id, 1); System.Threading.Thread.Sleep(100); SM.Debug("Sending telemetry alarm to SD; digital:" + tObj.DigitalNr); - test = $"#140#{radioID}#{tObj.Name}#"; - MainForm.udp.Send(SafeMobileLib.Utils.Convert_text_For_multicast("#0.0" + test), SafeMobileLib.Utils.Convert_text_For_multicast("#0.0"+test).Length); + test = $"#140#{radioID}#{tObj.Name}#"; + + byte[] dataToSend = Utils.Convert_text_For_multicast("#0.0" + test); + MainForm.udp.Send(dataToSend, dataToSend.Length); } else { @@ -938,8 +944,9 @@ namespace AppServer } } if (IhaveData) - { - MainForm.udp.Send(SafeMobileLib.Utils.Convert_text_For_multicast("#0.0#154#" + dest + "#"), SafeMobileLib.Utils.Convert_text_For_multicast("#0.0#154#" + dest + "#").Length); + { + byte[] dataToSend = Utils.Convert_text_For_multicast("#0.0#154#" + dest + "#"); + MainForm.udp.Send(dataToSend, dataToSend.Length); } } catch (Exception ex) @@ -1032,8 +1039,9 @@ namespace AppServer object[] param = { dirBackup, posgresPath }; bgWorkerDBbackup.RunWorkerAsync(param); - //send ACK back to SUM - MainForm.udp.Send(SafeMobileLib.Utils.Convert_text_For_multicast("#0.0#71#1#"), SafeMobileLib.Utils.Convert_text_For_multicast("#0.0#71#1#").Length); + //send ACK back to SUM + byte[] dataToSend = Utils.Convert_text_For_multicast("#0.0#71#1#"); + MainForm.udp.Send(dataToSend, dataToSend.Length); } catch (Exception ex) { @@ -1061,12 +1069,14 @@ namespace AppServer object[] param2 = { completeFileName, posgresPath }; bgWorkerDBrestore.RunWorkerAsync(param2); //send ACK back to SUM - MainForm.udp.Send(SafeMobileLib.Utils.Convert_text_For_multicast("#0.0#72#1#"), SafeMobileLib.Utils.Convert_text_For_multicast("#0.0#72#1#").Length); + byte[] dataToSend = Utils.Convert_text_For_multicast("#0.0#72#1#"); + MainForm.udp.Send(dataToSend, dataToSend.Length); } else { - SM.Debug("DB restored failed !!!" + "File " + completeFileName + " missing!!!"); - MainForm.udp.Send(SafeMobileLib.Utils.Convert_text_For_multicast("#0.0#62#0#"), SafeMobileLib.Utils.Convert_text_For_multicast("#0.0#62#0#").Length); + SM.Debug("DB restored failed !!!" + "File " + completeFileName + " missing!!!"); + byte[] dataToSend = Utils.Convert_text_For_multicast("#0.0#62#0#"); + MainForm.udp.Send(dataToSend, dataToSend.Length); } } catch (Exception ex) @@ -1138,7 +1148,9 @@ namespace AppServer //send broadcast messages I'm back in business Utils.WriteLine(string.Format("receive 500 from radio: Gateway {0} is ON", ((RadioGateway)MainForm.RadioGWHash[key]).Name), ConsoleColor.Green); string test1 = "#501#" + tempArr[4] + "#" + tempArr[5] + "#" + "ON#" + ((RadioGateway)MainForm.RadioGWHash[key]).Name + "#"; - MainForm.udp.Send(SafeMobileLib.Utils.Convert_text_For_multicast("#" + seqID4 + test1), SafeMobileLib.Utils.Convert_text_For_multicast("#" + seqID4 + test1).Length); + + byte[] dataToSend = Utils.Convert_text_For_multicast("#" + seqID4 + test1); + MainForm.udp.Send(dataToSend, dataToSend.Length); } ((RadioGateway)MainForm.RadioGWHash[key]).Alive = true; ((RadioGateway)MainForm.RadioGWHash[key]).LastUpdate = DateTime.UtcNow; @@ -1165,7 +1177,9 @@ namespace AppServer string status = ((RadioGateway)(entry.Value)).Alive ? "ON" : "OFF"; Utils.WriteLine(string.Format("Response for SD request: Gateway {0} is {1}", ((RadioGateway)(entry.Value)).Name, status), status == "ON" ? ConsoleColor.Green : ConsoleColor.Red); string test1 = "#501#" + ((RadioGateway)(entry.Value)).Gw_id + "#" + ((RadioGateway)(entry.Value)).Id + "#" + status + "#" + ((RadioGateway)(entry.Value)).Name + "#"; - MainForm.udp.Send(SafeMobileLib.Utils.Convert_text_For_multicast("#" + "0.0" + test1), SafeMobileLib.Utils.Convert_text_For_multicast("#" + "0.0" + test1).Length); + + byte[] dataToSend = Utils.Convert_text_For_multicast("#" + "0.0" + test1); + MainForm.udp.Send(dataToSend, dataToSend.Length); } } break; @@ -1288,11 +1302,14 @@ namespace AppServer if (sysPos != null) dest = sysPos.Gw_id + "." + sysPos.R_gw_id + "." + radioID.ToString(); String test = "#154#" + dest + "#"; - MainForm.udp.Send(SafeMobileLib.Utils.Convert_text_For_multicast("#" + seqId + test), SafeMobileLib.Utils.Convert_text_For_multicast("#" + seqId + test).Length); + + byte[] dataToSend = Utils.Convert_text_For_multicast("#" + seqId + test); + MainForm.udp.Send(dataToSend, dataToSend.Length); //send emergency alarm to SD test = "#134#" + radioID.ToString() + "#" + emergencyType; - MainForm.udp.Send(SafeMobileLib.Utils.Convert_text_For_multicast("#" + seqId + test), SafeMobileLib.Utils.Convert_text_For_multicast("#" + seqId + test).Length); + dataToSend = Utils.Convert_text_For_multicast("#" + seqId + test); + MainForm.udp.Send(dataToSend, dataToSend.Length); ((VehicleStatus)MainForm.VehicleHashStat[radioID]).curentStatus = Status_for_tab.EMERG; ((VehicleStatus)MainForm.VehicleHashStat[radioID]).lastArsTime = DateTime.Now; @@ -1373,7 +1390,9 @@ namespace AppServer UnitSysPosition tmpX = dbvehs.getSystemPosition(msg.sc_id_dest); //string test = "#143#" + tmpX.Gw_id + "." + tmpX.R_gw_id+"."+msg.imei_dest + "#" + msg.mess + "#" + msg.sched_timeGMT + "#"; string test = "#143#" + tmpX.Gw_id + "." + tmpX.R_gw_id + "." + msg.imei_dest + "#" + msg.mess + "#" + msg.sched_timeGMT + "#" + msg.dispatcherID + "#"; - MainForm.udp.Send(SafeMobileLib.Utils.Convert_text_For_multicast("#" + msg.seq_id + test), SafeMobileLib.Utils.Convert_text_For_multicast("#" + msg.seq_id + test).Length); + + byte[] dataToSend = Utils.Convert_text_For_multicast("#" + msg.seq_id + test); + MainForm.udp.Send(dataToSend, dataToSend.Length); } else SM.Debug("message will be sent at a later time - schedule: " + msg.sched_timeGMT + " current:" + DateTime.Now.ToUniversalTime().DateTo70Format()); @@ -1405,7 +1424,8 @@ namespace AppServer string test = ""; String cmdok = ""; var subsBlackList = new List { (int)Status_for_tab.OFF, (int)Status_for_tab.DISABLE, (int)Status_for_tab.MADEOFF }; - + byte[] dataToSend = null; + foreach (smsmessage msg in smss) { long sc_id = msg.sc_id_dest; @@ -1416,8 +1436,10 @@ namespace AppServer { if (SysPosList[sc_id]!=null) test = "#143#" + ((UnitSysPosition)SysPosList[sc_id]).Gw_id + "." + ((UnitSysPosition)SysPosList[sc_id]).R_gw_id + "." + msg.imei_dest + "#" + msg.mess + "#" + msg.sched_timeGMT + "#" + msg.dispatcherID + "#"; - else test = "#143#" + "0.0" + "." + msg.imei_dest + "#" + msg.mess + "#" + msg.sched_timeGMT + "#" + msg.dispatcherID + "#"; - MainForm.udp.Send(SafeMobileLib.Utils.Convert_text_For_multicast("#" + msg.seq_id + test), SafeMobileLib.Utils.Convert_text_For_multicast("#" + msg.seq_id + test).Length); + else test = "#143#" + "0.0" + "." + msg.imei_dest + "#" + msg.mess + "#" + msg.sched_timeGMT + "#" + msg.dispatcherID + "#"; + + dataToSend = Utils.Convert_text_For_multicast("#" + msg.seq_id + test); + MainForm.udp.Send(dataToSend, dataToSend.Length); } else SM.Debug("message will be sent at a later time - schedule: " + msg.sched_timeGMT + " current:" + DateTime.Now.ToUniversalTime().DateTo70Format()); @@ -1429,8 +1451,9 @@ namespace AppServer { UnitSysPosition tmpX = dbvehs.getSystemPosition_for_group(msg.imei_dest); - test = "#145#" + tmpX.Gw_id + "." + tmpX.R_gw_id + "." + msg.sc_id_dest + "#" + msg.mess + "#" + msg.sched_timeGMT + "#"; - MainForm.udp.Send(SafeMobileLib.Utils.Convert_text_For_multicast("#" + msg.seq_id + test), SafeMobileLib.Utils.Convert_text_For_multicast("#" + msg.seq_id + test).Length); + test = "#145#" + tmpX.Gw_id + "." + tmpX.R_gw_id + "." + msg.sc_id_dest + "#" + msg.mess + "#" + msg.sched_timeGMT + "#"; + dataToSend = Utils.Convert_text_For_multicast("#" + msg.seq_id + test); + MainForm.udp.Send(dataToSend, dataToSend.Length); } Utils.WriteLine($"Undelivered {undeliveredSMS} private messages and {smss.Count} group messages", ConsoleColor.White); @@ -1446,19 +1469,19 @@ namespace AppServer { //Check4ExpiredTickets List jtlist = new List(); - string list_of_id_text = ""; + try { DBTicketingManager DBT = new DBTicketingManager(Program.cfg.DB_IP, Program.cfg.DB_schema, Program.cfg.DB_user, Program.cfg.DB_passwd, Program.cfg.DB_port); List ExpiredTicketsIdList = DBT.updateTicketExpireDate(DateTo70Format(DateTime.UtcNow)); if(ExpiredTicketsIdList.Count>0) { - foreach(Int32 id in ExpiredTicketsIdList) - { - list_of_id_text += id + ","; - } - list_of_id_text = list_of_id_text.Substring(0, list_of_id_text.Length - 1); - MainForm.udp.Send(SafeMobileLib.Utils.Convert_text_For_multicast("#0.0#251#" + list_of_id_text + "#"), SafeMobileLib.Utils.Convert_text_For_multicast("#0.0#251#" + list_of_id_text + "#").Length); + + // get comma separated list + string list_of_id_text = string.Join(",", ExpiredTicketsIdList.Select(x => $"{x}")); + + byte[] dataToSend = Utils.Convert_text_For_multicast($"#0.0#251#{list_of_id_text}#"); + MainForm.udp.Send(dataToSend, dataToSend.Length); } } catch (Exception ex) @@ -1495,8 +1518,11 @@ namespace AppServer string message = string.Format("You need to finish job no.{0}, {1} in 10 minutes!", ticket.Ticket_id, ticket.Name); string head = "#143#0.0." + ticket.Imei + "#"; if (SysPosList[ticket.sc_id] != null) head = "#143#" + ((UnitSysPosition)SysPosList[ticket.sc_id]).Gw_id + "." + ((UnitSysPosition)SysPosList[ticket.sc_id]).R_gw_id + "." + ticket.Imei + "#"; - string test = head + message + "#" + 0 + "#"; - MainForm.udp.Send(SafeMobileLib.Utils.Convert_text_For_multicast("#" + ticket.seq_id + test), SafeMobileLib.Utils.Convert_text_For_multicast("#" + ticket.seq_id + test).Length); + string test = head + message + "#" + 0 + "#"; + + + byte[] dataToSend = Utils.Convert_text_For_multicast("#" + ticket.seq_id + test); + MainForm.udp.Send(dataToSend, dataToSend.Length); } } } @@ -1521,8 +1547,9 @@ namespace AppServer string head = "#143#0.0." + ticket.Imei + "#"; if (SysPosList[ticket.sc_id] != null) head = "#143#" + ((UnitSysPosition)SysPosList[ticket.sc_id]).Gw_id + "." + ((UnitSysPosition)SysPosList[ticket.sc_id]).R_gw_id + "." + ticket.Imei + "#"; - string test = head + ticket.Name + "#" + 0 + "#"; - MainForm.udp.Send(SafeMobileLib.Utils.Convert_text_For_multicast("#" + ticket.seq_id + test), SafeMobileLib.Utils.Convert_text_For_multicast("#" + ticket.seq_id + test).Length); + string test = head + ticket.Name + "#" + 0 + "#"; + byte[] dataToSend = Utils.Convert_text_For_multicast("#" + ticket.seq_id + test); + MainForm.udp.Send(dataToSend, dataToSend.Length); } else SM.Debug("ticket will be sent at a later time - schedule: " + ticket.sched_timegmt + " current:" + DateTime.Now.ToUniversalTime().DateTo70Format()); @@ -1553,8 +1580,10 @@ namespace AppServer { if (DateTime.Now.ToUniversalTime() > item.Timegmt.AddSeconds(item.ArsInterval + 10))// added 10 seconds; marja erroare { - SM.Debug("Unit:" + item.Imei + " ARS interval expired. Marking unit as OFF"); - MainForm.udp.Send(SafeMobileLib.Utils.Convert_text_For_multicast("#0.0#130#" + item.Imei + "#OFF#"), SafeMobileLib.Utils.Convert_text_For_multicast("#0.0#130#" + item.Imei + "#OFF#").Length); + SM.Debug("Unit:" + item.Imei + " ARS interval expired. Marking unit as OFF"); + + byte[] dataToSend = Utils.Convert_text_For_multicast("#0.0#130#" + item.Imei + "#OFF#"); + MainForm.udp.Send(dataToSend, dataToSend.Length); } } } @@ -1600,7 +1629,9 @@ namespace AppServer string test = "#501#" + ((RadioGateway)(entry.Value)).Gw_id + "#" + ((RadioGateway)(entry.Value)).Id + "#" + "OFF" + "#" + ((RadioGateway)(entry.Value)).Name + "#"; - MainForm.udp.Send(SafeMobileLib.Utils.Convert_text_For_multicast("#" + "0.0" + test), SafeMobileLib.Utils.Convert_text_For_multicast("#" + "0.0" + test).Length); + + byte[] dataToSend = Utils.Convert_text_For_multicast("#" + "0.0" + test); + MainForm.udp.Send(dataToSend, dataToSend.Length); ((RadioGateway)(entry.Value)).Alive = false; } } @@ -1685,7 +1716,9 @@ namespace AppServer public static void PushStatus(String IMEI,Status_for_tab stat) { Utils.WriteLine("Send PushStatus:" + stat+" Imei:"+IMEI,ConsoleColor.Yellow); - MainForm.udp.Send(SafeMobileLib.Utils.Convert_text_For_multicast("#0.0#153#" + IMEI + "#" + (Int32)stat + "#"), SafeMobileLib.Utils.Convert_text_For_multicast("#0.0#153#" + IMEI + "#" + (Int32)stat + "#").Length); + + byte[] dataToSend = Utils.Convert_text_For_multicast("#0.0#153#" + IMEI + "#" + (Int32)stat + "#"); + MainForm.udp.Send(dataToSend, dataToSend.Length); } @@ -2083,8 +2116,9 @@ namespace AppServer { messageOnScreen = true; try - { - MainForm.udp.Send(SafeMobileLib.Utils.Convert_text_For_multicast("#Application server database connection failed#"), SafeMobileLib.Utils.Convert_text_For_multicast("#0.0#210#3#Application server database connection failed#").Length); + { + byte[] dataToSend = Utils.Convert_text_For_multicast("#Application server database connection failed#"); + MainForm.udp.Send(dataToSend, dataToSend.Length); } catch (Exception ex2) { @@ -2520,8 +2554,9 @@ namespace AppServer { //send emergency alarm to SD //send ACK back to GW - string test = (backupDOne == true) ? "#61#1#" : "#61#0#"; - MainForm.udp.Send(SafeMobileLib.Utils.Convert_text_For_multicast("#0.0" + test), SafeMobileLib.Utils.Convert_text_For_multicast("#0.0" + test).Length); + string code = (backupDOne == true) ? "#61#1#" : "#61#0#"; + byte[] dataToSend = Utils.Convert_text_For_multicast("#0.0" + code); + MainForm.udp.Send(dataToSend, dataToSend.Length); } #endregion @@ -2548,8 +2583,10 @@ namespace AppServer { //send emergency alarm to SD //send ACK back to GW - string test = (restoreDOne == true) ? "#62#1#" : "#252#0#"; - MainForm.udp.Send(SafeMobileLib.Utils.Convert_text_For_multicast("#0.0" + test), SafeMobileLib.Utils.Convert_text_For_multicast("#0.0" + test).Length); + string code = (restoreDOne == true) ? "#62#1#" : "#252#0#"; + + byte[] dataToSend = Utils.Convert_text_For_multicast("#0.0" + code); + MainForm.udp.Send(dataToSend, dataToSend.Length); } #endregion diff --git a/SafeMobileLIB_DLL/UdpMulticast.cs b/SafeMobileLIB_DLL/UdpMulticast.cs index 0b11516..ae30c00 100644 --- a/SafeMobileLIB_DLL/UdpMulticast.cs +++ b/SafeMobileLIB_DLL/UdpMulticast.cs @@ -42,36 +42,28 @@ namespace SafeMobileLib recv = s.Receive(b); else break;//break if socket == null + if (recv == 0) continue;//continue if return nr bytes == 0 + + byte[] tmp = new byte[recv]; + for (int i = 0; i < recv; i++) + { + tmp[i] = b[i]; + } + + byte[] decByte = Encrypted ? Encryption.Decrypt(tmp, EncryptionAlgorithm.Des64) : tmp; + + // trigger event if (OnNewDataRecv != null) - { - byte[] tmp = new byte[recv]; - for (int i = 0; i < recv; i++) - { - tmp[i] = b[i]; - } - - byte[] decByte = Encrypted ? Encryption.Decrypt(tmp, EncryptionAlgorithm.Des64) : tmp; - - // trigger event OnNewDataRecv(decByte, decByte.Length); - } + + // trigger event if (OnNewDataReceived != null) - { - byte[] tmp = new byte[recv]; - for (int i = 0; i < recv; i++) - { - tmp[i] = b[i]; - } - - byte[] decByte = Encrypted ? Encryption.Decrypt(tmp, EncryptionAlgorithm.Des64) : tmp; - - // trigger event OnNewDataReceived(mcastGroup, decByte, decByte.Length); - } + if (s == null) @@ -108,27 +100,19 @@ namespace SafeMobileLib byte[] b = new byte[65507]; Thread.Sleep(1); int recv = s.Receive(b); - if (OnNewDataRecv != null) + + byte[] tmp = new byte[recv]; + for (int i = 0; i < recv; i++) { - byte[] tmp = new byte[recv]; - for (int i = 0; i < recv; i++) - { - tmp[i] = b[i]; - } - if (this.OnNewDataRecv != null) - this.OnNewDataRecv(tmp, tmp.Length); + tmp[i] = b[i]; } - if (OnNewDataReceived != null) - { - byte[] tmp = new byte[recv]; - for (int i = 0; i < recv; i++) - { - tmp[i] = b[i]; - } - if (this.OnNewDataReceived != null) - this.OnNewDataReceived(mcastGroup, tmp, tmp.Length); - } + if (this.OnNewDataRecv != null) + this.OnNewDataRecv(tmp, tmp.Length); + + if (this.OnNewDataReceived != null) + this.OnNewDataReceived(mcastGroup, tmp, tmp.Length); + if (s == null) { @@ -217,16 +201,17 @@ namespace SafeMobileLib IPEndPoint ipep = new IPEndPoint(myIP, port); s.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReuseAddress, 1); s.Bind(ipep); + IPAddress ip = IPAddress.Parse(mcastGroup); s.SetSocketOption(SocketOptionLevel.IP, SocketOptionName.AddMembership, new MulticastOption(ip, myIP)); - s.SetSocketOption(SocketOptionLevel.IP, - SocketOptionName.MulticastTimeToLive, int.Parse("1")); + s.SetSocketOption(SocketOptionLevel.IP, SocketOptionName.MulticastTimeToLive, int.Parse("1")); listenThread = new Thread(new ThreadStart(Listen)); listenThread.IsBackground = true; } if (listenThread != null) listenThread.Start(); + ret = true; Utils.WriteLine($"++++++++++++++++++++++++++++++++++++++++++\nUdpMulticast bind on {mcastGroup}:{port} Ethernet: {myIP}\n+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"); @@ -243,12 +228,14 @@ namespace SafeMobileLib bool ret = false; working = true; useThreadPool = true; + try { if (s == null) { s = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp); } + if (s != null) { Utils.WriteLine(String.Format("[### {0:H:mm:ss} ###] Port multi cast {1}", DateTime.Now, port)); @@ -257,8 +244,7 @@ namespace SafeMobileLib s.Bind(ipep); IPAddress ip = IPAddress.Parse(mcastGroup); s.SetSocketOption(SocketOptionLevel.IP, SocketOptionName.AddMembership, new MulticastOption(ip, IPAddress.Any)); - s.SetSocketOption(SocketOptionLevel.IP, - SocketOptionName.MulticastTimeToLive, int.Parse("1")); + s.SetSocketOption(SocketOptionLevel.IP, SocketOptionName.MulticastTimeToLive, int.Parse("1")); ThreadPool.QueueUserWorkItem(new WaitCallback(Listen_pool)); @@ -282,6 +268,7 @@ namespace SafeMobileLib { s = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp); } + if (s != null) { Utils.WriteLine(String.Format("[### {0:H:mm:ss} ###] Port multi cast {1}", DateTime.Now, port)); @@ -290,13 +277,14 @@ namespace SafeMobileLib s.Bind(ipep); IPAddress ip = IPAddress.Parse(mcastGroup); s.SetSocketOption(SocketOptionLevel.IP, SocketOptionName.AddMembership, new MulticastOption(ip, IPAddress.Any)); - s.SetSocketOption(SocketOptionLevel.IP, - SocketOptionName.MulticastTimeToLive, int.Parse("1")); + s.SetSocketOption(SocketOptionLevel.IP, SocketOptionName.MulticastTimeToLive, int.Parse("1")); listenThread = new Thread(new ThreadStart(Listen_Decoded)); listenThread.IsBackground = true; } + if (listenThread != null) listenThread.Start(); + ret = true; } catch (Exception ex)