Esempio n. 1
0
        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();
            }
        }
Esempio n. 2
0
        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();
            }
        }