private static void SavePackage(MeshNetworkServer.Package package) { var packageModel = MeshNetworkServerGUI.PackageConverter.ToPackageModel(package); using (var context = new MeshNetworkServerGUI.ApplicationDbContext()) { context.Packages.Add(packageModel); context.SaveChanges(); } }
private static void Listen() { try { IPEndPoint localIP = new IPEndPoint(IPAddress.Parse(GetLocalIPAddress()), localPort); listeningSocket.Bind(localIP); while (true) { int bytes = 0; byte[] dataIn = new byte[MeshNetworkServer.Package.bufferSize]; bool flag_close = false; EndPoint remoteIp = new IPEndPoint(IPAddress.Any, 0); do { try { bytes = listeningSocket.ReceiveFrom(dataIn, ref remoteIp); } catch (Exception exept) { MeshNetworkServerGUI.Program.log.Trace("Server hard shutdown: {0}", exept.Message); flag_close = true; break; } if (dataIn.Length != MeshNetworkServer.Package.bufferSize) { MeshNetworkServerGUI.Program.log.Warn("Received package invalid."); } else { if (IsUnicue(dataIn)) { MeshNetworkServer.Package packIn = MeshNetworkServer.Package.FromBinary(dataIn); MeshNetworkServerGUI.Program.log.Debug("Received unique package from {0} number {1}", packIn.NodeId, packIn.PackageId); SavePackage(packIn); } else { ushort node = BitConverter.ToUInt16(dataIn, 4); MeshNetworkServerGUI.Program.log.Debug("Received retry package from: {0}", node); } } }while (listeningSocket.Available > 0); if (flag_close) { break; } } } catch (Exception ex) { MeshNetworkServerGUI.Program.log.Error("Listen: {0}", ex.Message); } finally { MeshNetworkServerGUI.Program.log.Trace("Listen close"); Close(); } }