using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Net.Sockets; using System.Threading; using System.Net; using System.Diagnostics; //using SafeMobileLib; namespace WindowsService1 { class RegistrationThread { int port; public Socket socket; public NetworkStream clientStream; public RegistrationThread(NetworkStream _clientStream) { clientStream = _clientStream; } public void handleConnection() { try { System.Text.UTF8Encoding encoding = new System.Text.UTF8Encoding(); while (true) { byte[] message = new byte[1024]; int result = clientStream.Read(message, 0, message.Length); //EventLog.WriteEntry("Safemobile", "Recived data on TCP and Send on MULTICAST PACK value: " + result, EventLogEntryType.Information, 34500); //EventLog.WriteEntry("Safemobile", "Data: X" + System.Text.Encoding.ASCII.GetString(message, 0, result).Trim() + "X", EventLogEntryType.Information, 34500); String str = System.Text.Encoding.ASCII.GetString(message, 0, result); if (str.Contains("PONG")) { Utils.WriteEventLog("Safemobile", $"Received {str}", EventLogEntryType.Information, 23456); OnPong?.Invoke(); } else if (str.Contains("##")) { System.Text.Encoding enc = System.Text.Encoding.ASCII; byte[] buf = null; while (str.Contains("##")) { String send = str.Remove(str.IndexOf("##")); send += "#"; Service1.MessageSend.Enqueue(send); buf = enc.GetBytes(send); Service1.UdpMulti.Send(buf, buf.Length); str = str.Remove(0, str.IndexOf("##") + 1); } Service1.MessageSend.Enqueue(str); buf = enc.GetBytes(str); Service1.UdpMulti.Send(buf, buf.Length); } else { Service1.MessageSend.Enqueue(str); System.Text.Encoding enc = System.Text.Encoding.ASCII; byte[] buf = enc.GetBytes(str); Service1.UdpMulti.Send(buf, buf.Length); } Thread.Sleep(1); } } catch (Exception ex) { Utils.WriteEventLog("Safemobile", "Error parsing TCP messages", EventLogEntryType.Error, 23456); //Form1.appDead = true; } } public delegate void PongDelegate(); public event PongDelegate OnPong; } }