コード例 #1
0
        public bool kontrolle(int max_verbindung, int port, bool plus_minus)
        {
            bool status_vorhanden = false;
            bool status_frei      = false;

            /* Prüfen ob Port noch Verbindungen entgegen nehmen kann oder nicht */
            foreach (Zahlwerk_List zahl in zahlwerk)
            {
                if (zahl.port == port)                                                                                                                                                                                                                                             /* wenn Port gefunden wurde hier rein gehen */
                {
                    if (plus_minus == true)                                                                                                                                                                                                                                        /* Es soll eine neue Verbindungen aufgebaut werden */
                    {
                        protokoll.erstellen(debuger.block(), "Port_" + port, "Prüfen ob Port: " + port + " noch freie Plätze hat.", debuger.klasse(), debuger.path(), debuger.dateiName(), debuger.funktion(), debuger.zeile(), false);                                            /* Protokoll erstellen */
                        if (zahl.laufend == max_verbindung)
                        {                                                                                                                                                                                                                                                          /* Es ist die Maximale Verbindung auf diesem Port Vorhanden false zurückgeben */
                            protokoll.erstellen(debuger.block(), "Port_" + port, "Keine Verbindung auf Port " + port + " mehr Verfügbar Max: " + max_verbindung + " erreicht.", debuger.klasse(), debuger.path(), debuger.dateiName(), debuger.funktion(), debuger.zeile(), true); /* Protokoll erstellen */
                        }
                        else
                        {
                            status_frei = true;  zahl.laufend++;
                        }                                                    /*  Es sind noch Verbindung übrig zähler hochsetzten und true zurückgeben  */
                    }
                    else
                    if (zahl.laufend > 0)
                    {
                        zahl.laufend--;
                    }
                    else
                    {
                    }                                                         /* Die Verbindung auf dem Port wurde geändert Zähler reduzoeren und Verbindungen wieder Frei geben */

                    if (status_frei == true)
                    {
                        protokoll.erstellen(debuger.block(), "Port_" + port, "Port Status. Max: " + max_verbindung + " Vergeben Pos.: " + zahl.laufend, debuger.klasse(), debuger.path(), debuger.dateiName(), debuger.funktion(), debuger.zeile(), false);                  /* Protokoll erstellen */
                    }
                    else
                    {
                    }

                    status_vorhanden = true;        /* Status auf True setzen da Port schon in liste ist */
                    break;
                }
                else
                {
                }
            }

            /* Es wurde noch kein eintrag für Port gemacht neuen hinzufügen mit Zählwerk */
            if (status_vorhanden == false)
            {
                zahlwerk.Add(new Zahlwerk_List(port, 1));                                                                                                                                                                             /* Zählwerk Inizialiesiern mit 1 ( 1 verbindung ) */
                protokoll.erstellen(debuger.block(), "Port_" + port, "Port Status. Max: " + max_verbindung + " Vergeben Pos.: 1", debuger.klasse(), debuger.path(), debuger.dateiName(), debuger.funktion(), debuger.zeile(), false); /* Protokoll erstellen */
                status_frei = true;
            }
            else
            {
            }

            return(status_frei);
        }
コード例 #2
0
ファイル: noc_main.cs プロジェクト: Flagna/NOC
        public void rennen()
        {
            EventObjekt    eventobjekt = new EventObjekt();                                                                                                                                        /* Eventobjekt erstellen */
            ConsoleKeyInfo taste       = new ConsoleKeyInfo();                                                                                                                                     /* Tastaturabfrage Objekt erstellen */

            protokoll.erstellen(debuger.block(), proto_gruppe, "Haupt Thread wird gestartet.", debuger.klasse(), debuger.path(), debuger.dateiName(), debuger.funktion(), debuger.zeile(), false); /* Protokoll erstellen */
            while (status)
            {
                /* Auswerung zurücksetzten und auf neue Eingabe lauschen von Tastatur */
                taste = Console.ReadKey(true);

                if (eventobjekt.tastatur(taste, "altgr+b"))
                {                                                                                                                                                                                                                    /* Programm beenden  Alles Stoppen */
                    protokoll.erstellen(debuger.block(), proto_gruppe, "Benutzer Stoppt das komplette Backend mit ( Abort() ).", debuger.klasse(), debuger.path(), debuger.dateiName(), debuger.funktion(), debuger.zeile(), false); /* Protokoll erstellen */
                    for (int i = 1; i < NocBackend.noc_thread.Length; i++)
                    {
                        try
                        {
                            if (NocBackend.noc_thread[i].IsAlive)
                            {
                                foreach (TCP_Verwaltung.TCP_List tcpli in TCP_Verwaltung.liste)
                                {
                                    if (tcpli.thread_name == NocBackend.noc_thread[i].Name) /* TCP Listener suchen anhand des Thred Namen */
                                    {
                                        tcpli.listener.Stop();                              /* TCP Listener Stoppen */
                                        break;
                                    }
                                    else
                                    {
                                    }
                                }

                                protokoll.erstellen(debuger.block(), proto_gruppe, "Stoppe Thread: " + NocBackend.noc_thread[i].Name, debuger.klasse(), debuger.path(), debuger.dateiName(), debuger.funktion(), debuger.zeile(), false); /* Protokoll erstellen */
                                NocBackend.noc_thread[i].Abort();
                                NocBackend.noc_thread[i].Join();                                                                                                                                                                          /* Warten bis Thread beendet wurde */
                            }
                            else
                            {
                            }
                        }
                        catch
                        {  }
                    }
                    protokoll.erstellen(debuger.block(), proto_gruppe, "Stoppe HauptThread.", debuger.klasse(), debuger.path(), debuger.dateiName(), debuger.funktion(), debuger.zeile(), false); /* Protokoll erstellen */
                    this.anhalten();                                                                                                                                                              /* HauptThread  ( Main ) anhalten -- erst zum schluss ;-)  */
                }
                else if (eventobjekt.tastatur(taste, "altgr+c"))                                                                                                                                  /* MYSQL Datenimport Thread Beenden  */
                {
                    try{ NocBackend.mysqldatenimport.anhalten(); } catch { }
                    protokoll.erstellen(debuger.block(), proto_gruppe, "Thread - Datenimport zu MYSQL wurde gestoppt.", debuger.klasse(), debuger.path(), debuger.dateiName(), debuger.funktion(), debuger.zeile(), false);                             /* Protokoll erstellen */
                }
                else
                {
                }
            }
        }
コード例 #3
0
ファイル: noc_main.cs プロジェクト: Flagna/NOC
        /* Die Hauptfunktion / Main  vom backend NOC Portal */
        public static void Main()
        {
            Debuger debuger = new Debuger();

            debuger.routeErmitteln();       /* Roue Ordner Ermitteln */

            string      version            = "1.0";
            Einstellung einstellung        = new Einstellung();
            bool        status_einstellung = einstellung.laden();

            Protokoll protokoll    = new Protokoll();
            string    proto_gruppe = "main";


            AsciiPic asciipic = new AsciiPic();

            protokoll.erstellen(debuger.block(), proto_gruppe, "Noc Portal Backend Version " + version + " wird gestartet.  Auf Rechner: " + Environment.MachineName, debuger.klasse(), debuger.path(), debuger.dateiName(), debuger.funktion(), debuger.zeile(), false);                   /* Protokoll erstellen */
            Console.WriteLine("----------------------------------------------------- \n");
            Console.WriteLine("-- Willkommen im NOC Portal Backend Version " + version + " -- \n");
            Console.WriteLine("----------------------------------------------------- \n\n");

            if (status_einstellung == true)
            {
                Console.WriteLine(" Tastenkombination:  \n");
                Console.WriteLine(" -> AltGr + C = Clary Thread ausschalten zur DB. ( es erfolgt kein neuer Durchlauf Aktueller wird noch abgearbeitet. )  \n");
                Console.WriteLine(" -> AltGr + B = Programm beenden.  \n\n");

                main_run();
            }
            else
            {
                protokoll.erstellen(debuger.block(), proto_gruppe, "Config Datei vom Server war fehlerhaft. Programm wurde abgebrochen.", debuger.klasse(), debuger.path(), debuger.dateiName(), debuger.funktion(), debuger.zeile(), true); /* Protokoll erstellen */
                Console.BackgroundColor = ConsoleColor.Magenta;                                                                                                                                                                              /* Hintergrund Farbe zuweisen */
                Console.ForegroundColor = ConsoleColor.Black;                                                                                                                                                                                /* Text Frabe zuweisen */
                Console.WriteLine("\n\n Fehler in der Config datei! Programm wurde abgebrochen. \n");
                Console.ResetColor();                                                                                                                                                                                                        /* auf Standart Farbzuweisung gehen zurückgehen */
            }

            Console.WriteLine("\n\n  Bitte nicht Ausschalten sichere Daten! Danke. \n\n");

            protokoll.erstellen(debuger.block(), proto_gruppe, "Noc Portal Backend Version " + version + " wurde beendet.  Auf Rechner: " + Environment.MachineName, debuger.klasse(), debuger.path(), debuger.dateiName(), debuger.funktion(), debuger.zeile(), false);                  /* Protokoll erstellen */
            Thread protokoll_speicherung = new Thread(protokoll.rennen);

            protokoll_speicherung.Name         = "Ende_vom_Protokoll_Schreiben"; /* Thread Namen geben */
            protokoll_speicherung.Priority     = ThreadPriority.Highest;         /* Höchste Priorität vergeben was Thread hat */
            protokoll_speicherung.IsBackground = true;
            protokoll_speicherung.Start();
            protokoll.stop();
            protokoll_speicherung.Join();       /* Warte bis Protokolle gespeichert wurden */
            Console.WriteLine("\n----------------------------------------------------- \n");
            Console.WriteLine("--------  Daten wurden gesichert.-------------------- \n");
            Console.WriteLine("-------- NOC Portal Backend wurde Beendet!  --------- \n");
            Console.WriteLine("----------------------------------------------------- \n\n");
            Console.WriteLine(asciipic.computer());
        }
コード例 #4
0
ファイル: Program.cs プロジェクト: Flagna/NOC
        /* Die Hauptfunktion / Main  vom backend NOC Portal */
        public void mainClaryDatenImport()
        {
            /* hier erst reingehen wenn Status komplett oder empfange geliefert wird von Klasse */
            if (Clary.cfy_port_status == "mysql")           //MEClary.Clary.cfy_port_status ==  "empfange")
            {
                Clary.cfy_port_status = "leer";
                Console.WriteLine("-------- Erledigt CFY Daten wurden in DB Geschrieben ---- ");

                //MEQuery.Protokoll protokolll = new MEQuery.Protokoll ();

                protokoll.erstellen(debuger.block(), proto_gruppe, "Neue daten sind angekommen vom Listener Status: " + MEClary.Clary.cfy_port_status, debuger.klasse(), debuger.path(), debuger.dateiName(), debuger.funktion(), debuger.zeile(), false);                             /* Protokoll erstellen */


                /*
                 * try {
                 *      //Neue Daten laden...
                 *      Clary newData = new Clary ();
                 *      newData.rohdaten ("");
                 * } catch (Exception e) {
                 *      //protokoll.erstellen("Rohdaten holen", );
                 *
                 *
                 * }
                 * try {
                 *      //Datenbankdaten laden
                 *      LoadMySQLData load = new LoadMySQLData ();
                 * } catch (Exception e) {
                 *      Console.WriteLine (e);
                 * }
                 * try {
                 *      //Neue mit alten Daten vergleichen
                 *      Compare compare = new Compare ();
                 * } catch (Exception e) {
                 *      Console.WriteLine (e);
                 * }
                 *
                 *
                 * // Status ändern und Listener wieder frei geben das dieser neue Daten empfangen kann
                 *
                 */
                /* Protokoll erstellen */
                protokoll.erstellen(debuger.block(), proto_gruppe, "Daten wurden erfolgreich in MYSQL integriert ( CFY) warte auf neue Daten.", debuger.klasse(), debuger.path(), debuger.dateiName(), debuger.funktion(), debuger.zeile(), false);                         /* Protokoll erstellen */
                /* neue gruppen Nummer generieren aus unix zeitstempel */
                //proto_gruppe = "" + datum.unix();
            }
            else if (MEClary.Clary.cfy_port_status == "komplett")
            {
                //Vergleichen und einfügen
            }
            else
            {
            }
        }
コード例 #5
0
        public void tcp_eintrag(string ip_adresse, int port, string thread_name, string proto_gruppe)
        {
            bool status = false;

            /* Prüfen ob Port noch Verbindungen entgegen nehmen kann oder nicht */
            foreach (TCP_List tcpli in liste)
            {
                if (tcpli.thread_name == thread_name)
                {
                    status = true;    /* Kein neuer eintrag TCP Listener war schon vorhanden */
                }
            }

            if (status == false)  /* Es war noch kein TCP Listener Vorhanden */
            {
                try
                {
                    IPAddress   ipadress = IPAddress.Parse(ip_adresse);
                    TcpListener listener = new TcpListener(ipadress, port);
                    liste.Add(new TCP_List(listener, thread_name));
                    protokoll.erstellen(debuger.block(), proto_gruppe, "TCP Verbindung vorbereitet auf: " + ipadress + ":" + port, debuger.klasse(), debuger.path(), debuger.dateiName(), debuger.funktion(), debuger.zeile(), false); /* Protokoll erstellen */
                }
                catch (ThreadAbortException)                                                                                                                                                                                           /* Thread wird von der Main aus sofort abgebrochen - Programm wurde beendet */
                { protokoll.erstellen(debuger.block(), proto_gruppe, "Thread wurde von der Main sofort Beendet. ( .Abort() )", debuger.klasse(), debuger.path(), debuger.dateiName(), debuger.funktion(), debuger.zeile(), false); /* Protokoll erstellen */ }
                catch (System.FormatException e)
                {
                    protokoll.erstellen(debuger.block(), proto_gruppe, "IP Adresse ist Fehlerhaft. FormatException wurde gewurfen mit Fehler: " + e.Message, debuger.klasse(), debuger.path(), debuger.dateiName(), debuger.funktion(), debuger.zeile(), true);               /* Protokoll erstellen */
                }
                catch (NullReferenceException e)
                {
                    protokoll.erstellen(debuger.block(), proto_gruppe, "NullReferenceException wurde gewurfen. Fehler: " + e.Message, debuger.klasse(), debuger.path(), debuger.dateiName(), debuger.funktion(), debuger.zeile(), true);                    /* Protokoll erstellen */
                }
                catch (SocketException e)
                {
                    protokoll.erstellen(debuger.block(), proto_gruppe, "SocketException wurde gewurfen. Fehler: " + e.Message, debuger.klasse(), debuger.path(), debuger.dateiName(), debuger.funktion(), debuger.zeile(), true);              /* Protokoll erstellen */
                }
                catch (ArgumentOutOfRangeException e)
                {
                    protokoll.erstellen(debuger.block(), proto_gruppe, "Port ist Fehlerhaft. ArgumentOutOfRangeException wurde gewurfen mit Fehler: " + e.Message + "<br /> Tip! MaxPort ist: " + IPEndPoint.MaxPort, debuger.klasse(), debuger.path(), debuger.dateiName(), debuger.funktion(), debuger.zeile(), true);                  /* Protokoll erstellen */
                }
            }
            else
            {
            }
        }
コード例 #6
0
        public void rohdaten(string daten)
        {
            /* Beispiel:
             *
             *  List<Clary.Clary_List> clary_daten = clary.rohdaten();
             *
             *  string clary_ausgabe = "";
             *  foreach (Clary.Clary_List cla in clary_daten)
             *  {
             *      clary_ausgabe += " Ort: " + cla.ort+ " Gestattungsgeber: " + cla.gestatt_name + "\n";
             *  }
             *
             */



            string signalquelle_id = string.Empty;
            string cluster_id      = string.Empty;
            string type            = string.Empty;
            string kategorie       = string.Empty;
            int    region;
            string plz               = string.Empty;
            string ort               = string.Empty;
            string strasse           = string.Empty;
            string hnr               = string.Empty;
            string gestatt_name      = string.Empty;
            string gestatt_vertragsn = string.Empty;
            int    objekt_id;
            int    soll_we;
            int    subscriber;
            int    subscriber_int;
            int    subscriber_tel;
            string status          = string.Empty;
            string cmts            = string.Empty;
            string gps_langengrad  = string.Empty;
            string gps_breitengrad = string.Empty;
            string signallieferant = string.Empty;

            List <Clary_List> clary_daten = new List <Clary_List>();

            /*  Daten Verarbeiten welche vom Portlistener gekommen sind  - Start - */
            protokoll.erstellen(debuger.block(), Clary.cfy_port_gruppe, "Es wird begonnen die List zu befühlen mit den Daten vom Portlistener.", debuger.klasse(), debuger.path(), debuger.dateiName(), debuger.funktion(), debuger.zeile(), false);            /* Protokoll erstellen */


            Console.WriteLine("\n Daten Was CFY Klasse zum Befühllen erhalten hat: " + daten + " \n Bitte Taste Drücken. ");
            Console.ReadKey();


            /*  Daten Verarbeiten welche vom Portlistener gekommen sind  - Ende - */



            /* Testdaten  Start */

            signalquelle_id   = "58268";                cluster_id = "005865";
            type              = "eigen";            kategorie = "sonstiges";
            region            = 1;                        plz = "04435";
            ort               = "Schkeuditz";        strasse = "teststraße";
            hnr               = "15";                gestatt_name = "Wogetra";
            gestatt_vertragsn = "jj88899222ll";    objekt_id = 584848484;
            soll_we           = 10;                   subscriber = 5;
            subscriber_int    = 2;              subscriber_tel = 3;
            status            = "online";      cmts = "l1-he2";
            gps_langengrad    = "8458484.965895489";          gps_breitengrad = "1122121.3333333";
            signallieferant   = "Primacom";

            clary_daten.Add(new Clary_List(signalquelle_id, cluster_id, type, kategorie, region, plz, ort, strasse, hnr, gestatt_name,
                                           gestatt_vertragsn, objekt_id, soll_we, subscriber, subscriber_int, subscriber_tel,
                                           status, cmts, gps_langengrad, gps_breitengrad, signallieferant));

            signalquelle_id   = "23236";                cluster_id = "1125582";
            type              = "eigen";            kategorie = "kopf";
            region            = 6;                        plz = "23546";
            ort               = "Berlin";            strasse = "berlinstrase";
            hnr               = "55";                gestatt_name = "Berliner";
            gestatt_vertragsn = "KKK9922222";    objekt_id = 1112255333;
            soll_we           = 10;                   subscriber = 5;
            subscriber_int    = 2;              subscriber_tel = 3;
            status            = "online";      cmts = "be-he6";
            gps_langengrad    = "8458484.965895489";          gps_breitengrad = "1122121.3333333";
            signallieferant   = "Telecolumbus";

            clary_daten.Add(new Clary_List(signalquelle_id, cluster_id, type, kategorie, region, plz, ort, strasse, hnr, gestatt_name,
                                           gestatt_vertragsn, objekt_id, soll_we, subscriber, subscriber_int, subscriber_tel,
                                           status, cmts, gps_langengrad, gps_breitengrad, signallieferant));

            signalquelle_id   = "1122233";            cluster_id = "889977";
            type              = "fremd";            kategorie = "hallo";
            region            = 3;                        plz = "47866";
            ort               = "Dresden";            strasse = "dresdenstrase";
            hnr               = "77h";                       gestatt_name = "Gestt Dresden GmbH";
            gestatt_vertragsn = "DE778skk";    objekt_id = 556565656;
            soll_we           = 15;                   subscriber = 15;
            subscriber_int    = 12;             subscriber_tel = 13;
            status            = "online";      cmts = "de-he2";
            gps_langengrad    = "45484884.55555";             gps_breitengrad = "148544845.5985959";
            signallieferant   = "Telekom";

            clary_daten.Add(new Clary_List(signalquelle_id, cluster_id, type, kategorie, region, plz, ort, strasse, hnr, gestatt_name,
                                           gestatt_vertragsn, objekt_id, soll_we, subscriber, subscriber_int, subscriber_tel,
                                           status, cmts, gps_langengrad, gps_breitengrad, signallieferant));

            /* Testdaten  Ende */



            cfy_rohdaten = clary_daten;                                                                                                                                                                                                                         /* Daten in Klassen List laden und zum verarbeiten bereitstellen */
            protokoll.erstellen(debuger.block(), Clary.cfy_port_gruppe, "List wurde erfolgreich erstellt mit daten und Status wurde auf Komplett gesetzt.", debuger.klasse(), debuger.path(), debuger.dateiName(), debuger.funktion(), debuger.zeile(), false); /* Protokoll erstellen */
            Clary.cfy_port_status = "mysql";                                                                                                                                                                                                                    /* Clray List Status auf Komplett setezen und zur weiterverarbeitung Frei geben */
        }
コード例 #7
0
        private static ArrayList clientThread = new ArrayList();              /* Die Liste der laufenden Server-Threads */



        public void rennen()
        {
            proto_gruppe = ip_adresse + ":" + port + "|" + port_bezeichnung;               /* Gruppe für durchlauf defienieren für Protokoll */

            try
            {
                /* verbindung zur Netzwerk Schnittstelle herstellen ( Listener Vorbereiten und in List legen ) */
                TCP_Verwaltung tcp_verwaltung = new TCP_Verwaltung();
                tcp_verwaltung.tcp_eintrag(ip_adresse, port, thread_name, proto_gruppe);


                /* Listener aus List holen  für diese Thread zum Starten */
                foreach (TCP_Verwaltung.TCP_List tcpli in TCP_Verwaltung.liste)
                {
                    if (tcpli.thread_name == thread_name)
                    {
                        listener = tcpli.listener;
                        break;
                    }
                    else
                    {
                    }
                }

                listener.Start();                                                                                                                                                                   /* Listener Starten */

                protokoll.erstellen(debuger.block(), proto_gruppe, "TCP Verbindung gestartet.", debuger.klasse(), debuger.path(), debuger.dateiName(), debuger.funktion(), debuger.zeile(), false); /* Protokoll erstellen */
                while (status)
                {
                    try
                    {
                        protokoll.erstellen(debuger.block(), proto_gruppe, "Warte auf Eingehende Verbindung.", debuger.klasse(), debuger.path(), debuger.dateiName(), debuger.funktion(), debuger.zeile(), false);                            /* Protokoll erstellen */

                        /* Auf Verbindung Lauschen ob Jemand was möchte - System wartet hier bis sich jemand meldet */
                        TcpClient client = listener.AcceptTcpClient();

                        protokoll.erstellen(debuger.block(), proto_gruppe, "Antwort vom Client erhalten Übergebe Verbindung an Thread und erstelle neue Verbindung. ( Client_Instanz() )", debuger.klasse(), debuger.path(), debuger.dateiName(), debuger.funktion(), debuger.zeile(), false); /* Protokoll erstellen */
                        clientThread.Add(new Client_Instanz(client, proto_gruppe, port_bezeichnung, max_verbindung, port));                                                                                                                                                                    /* übergebe Verbindung um eigenen Thread zu erstellen für Verbindung */
                    }
                    catch (ThreadAbortException)                                                                                                                                                                                                                                               /* Thread wird von der Main aus sofort abgebrochen - Programm wurde beendet */
                    {
                        protokoll.erstellen(debuger.block(), proto_gruppe, "Thread wurde von der Main sofort Beendet. ( .Abort() )", debuger.klasse(), debuger.path(), debuger.dateiName(), debuger.funktion(), debuger.zeile(), false);                                                       /* Protokoll erstellen */
                        break;
                    }
                    catch (System.IO.IOException)
                    {
                        protokoll.erstellen(debuger.block(), proto_gruppe, "Client hat Verbindung beendet.", debuger.klasse(), debuger.path(), debuger.dateiName(), debuger.funktion(), debuger.zeile(), false);             /* Protokoll erstellen */
                    }
                    catch (SocketException e)
                    {
                        protokoll.erstellen(debuger.block(), proto_gruppe, "SocketException wurde gewurfen Verbindung wurde getrennt. Fehler: " + e.Message, debuger.klasse(), debuger.path(), debuger.dateiName(), debuger.funktion(), debuger.zeile(), true);            /* Protokoll erstellen */
                    }

                    Thread.Sleep(2000);                  /* 2 Secunden Warden bis Überwachung erneut gestartet wird */
                }

                protokoll.erstellen(debuger.block(), proto_gruppe, "TCP Verbindung wurde beendet.", debuger.klasse(), debuger.path(), debuger.dateiName(), debuger.funktion(), debuger.zeile(), false);                         /* Protokoll erstellen */
                listener.Stop();
            }
            catch (ThreadAbortException)                                                                                                                                                                                         /* Thread wird von der Main aus sofort abgebrochen - Programm wurde beendet */
            {
                protokoll.erstellen(debuger.block(), proto_gruppe, "Thread wurde von der Main sofort Beendet. ( .Abort() )", debuger.klasse(), debuger.path(), debuger.dateiName(), debuger.funktion(), debuger.zeile(), false); /* Protokoll erstellen */
                listener.Stop();
            }
            catch (NullReferenceException e)
            {
                protokoll.erstellen(debuger.block(), proto_gruppe, "NullReferenceException wurde gewurfen TCP Verbindung wurde beendet. Fehler: " + e.Message, debuger.klasse(), debuger.path(), debuger.dateiName(), debuger.funktion(), debuger.zeile(), true);                              /* Protokoll erstellen */
            }
            catch (SocketException e)
            {
                protokoll.erstellen(debuger.block(), proto_gruppe, "SocketException wurde gewurfen TCP Verbindung wurde beendet. Fehler: " + e.Message, debuger.klasse(), debuger.path(), debuger.dateiName(), debuger.funktion(), debuger.zeile(), true);              /* Protokoll erstellen */
            }
        }
コード例 #8
0
ファイル: noc_main.cs プロジェクト: Flagna/NOC
        public static void main_run()
        {
            Protokoll protokoll    = new Protokoll();
            Debuger   debuger      = new Debuger();
            string    proto_gruppe = "main";

            /* Hier werden die gesamten Thread gstartet was benötigt werden im Backend */
            Host   host    = new Host();
            NocRun noc_run = new NocRun();

            PortZuweisung portzuweisung = new PortZuweisung();

            portzuweisung.portlist();        /* Port Liste erstellen */

            /* Netzwerk Daten Bereitstellen */
            Thread netzwerkDatenHolen = new Thread(host.netzwerk_daten_holen);

            netzwerkDatenHolen.Name         = "Netzwerk_Daten_Holen"; /* Thread Namen geben */
            netzwerkDatenHolen.Priority     = ThreadPriority.Highest; /* Höchste Priorität vergeben was Thread hat */
            netzwerkDatenHolen.IsBackground = true;
            netzwerkDatenHolen.Start();
            netzwerkDatenHolen.Join();                   /* Warte bis Alle Daten gesammelt wurden vom Netzwerk  */

            int port_anzahl = PortZuweisung.liste.Count; /* Anzahl ermitteln wieviel Port es gibt */

            int th_anzahl = 0;                           /* Variable spiegelt die Anzahl der Threads wieder */

            if (Einstellung.ip_adresse == "alle")
            {                                                          /* jetzt werden alle gefundenen IP adressen genommen was im System vorhanden waren */
                th_anzahl = (Host.netzwDaten.Count + 3) * port_anzahl; /* Wieviel Thread erzeugt werden sollen ermitteln plus standart Threads die immer aktiviert werden * der Port Adressen die benötigt werden  */
            }
            else                                                       /* Es wurde eine IP Adresse über die Config Datei eingetragen */
            {
                th_anzahl = (2 + 3) * port_anzahl;                     /* Wieviel Thread erzeugt werden sollen ermitteln plus standart Threads die immer aktiviert werden * der Port Adressen die benötigt werden  */
            }
            portlistener = new PortListener[th_anzahl];
            noc_thread   = new Thread[th_anzahl];          /* Threads erstellen */


            protokoll.erstellen(debuger.block(), proto_gruppe, "Thread werden vorbereitet.", debuger.klasse(), debuger.path(), debuger.dateiName(), debuger.funktion(), debuger.zeile(), false); /* Protokoll erstellen */

            noc_thread[0]              = new Thread(noc_run.rennen);                                                                                                                             /* Thread Objekt erzeugen  aus Klasse - Standart Thread - */
            noc_thread[0].Name         = "Hauptfunktion_main_run";                                                                                                                               /* Thread Namen geben */
            noc_thread[0].Priority     = ThreadPriority.Highest;                                                                                                                                 /* Höchste Priorität vergeben was Thread hat */
            noc_thread[0].IsBackground = true;                                                                                                                                                   /* Thread läuft im Backround  deklarieren ( System räumt bei nicht beenden des Thread selber diesen auf )  */
            noc_thread[1]              = new Thread(mysqldatenimport.rennen);                                                                                                                    /* Thread Objekt erzeugen  aus Klasse - Standart Thread - */
            noc_thread[1].Name         = "CFY_zu_Mysql_Datenimport";                                                                                                                             /* Thread Namen geben */
            noc_thread[1].Priority     = ThreadPriority.BelowNormal;                                                                                                                             /* eine stufe unter Normale Priorität vergeben was Thread hat */
            noc_thread[1].IsBackground = true;                                                                                                                                                   /* Thread läuft im Backround  deklarieren ( System räumt bei nicht beenden des Thread selber diesen auf )  */
            noc_thread[2]              = new Thread(protokoll.rennen);                                                                                                                           /* Thread Objekt erzeugen  aus Klasse - Standart Thread - */
            noc_thread[2].Name         = "Protokoll_in_Daten_Schreiben";                                                                                                                         /* Thread Namen geben */
            noc_thread[2].Priority     = ThreadPriority.Highest;                                                                                                                                 /* Höchste Priorität vergeben was Thread hat */
            noc_thread[2].IsBackground = true;                                                                                                                                                   /* Thread läuft im Backround  deklarieren ( System räumt bei nicht beenden des Thread selber diesen auf )  */

            int    port_i      = 0;
            int    pos         = 3;
            string thread_name = string.Empty;

            /* Port Schleife */
            Thread.Sleep(1000);
            foreach (PortZuweisung.Port_List port_liste in PortZuweisung.liste)
            {
                if (Einstellung.ip_adresse == "alle")
                {    /* Alle gefundene IP Adressen vom System nehmen */
                    /* Aktive Verbindungen lauschen lassen  - Start - */
                    foreach (Host.Neztwerk_List netz in Host.netzwDaten)
                    {
                        if (netz.aktiv_ip == "ja")
                        {
                            protokoll.erstellen(debuger.block(), proto_gruppe, "TCP Vorbereitung für " + netz.ip_adresse + ":" + port_liste.port + " zum Lauschen.", debuger.klasse(), debuger.path(), debuger.dateiName(), debuger.funktion(), debuger.zeile(), false); /* Protokoll erstellen */
                            thread_name          = "PortListener_" + netz.ip_adresse + ":" + port_liste.port;                                                                                                                                                            /* Thread Namen zuweisen */
                            portlistener[port_i] = new PortListener();
                            portlistener[port_i].ipport(netz.ip_adresse, port_liste.port, port_liste.bezeichnung, port_liste.max_verbindung, thread_name);
                            noc_thread[pos]              = new Thread(portlistener[port_i].rennen);
                            noc_thread[pos].Name         = thread_name;
                            noc_thread[pos].Priority     = ThreadPriority.AboveNormal; /* eine Stufe unter Höchste Priorität vergeben was Thread hat */
                            noc_thread[pos].IsBackground = true;                       /* Thread läuft im Backround  deklarieren ( System räumt bei nicht beenden des Thread selber diesen auf )  */
                            pos++;
                            port_i++;
                        }
                        else
                        {
                        }
                    }
                    /* Aktive Verbindungen lauschen lassen  - Ende - */
                }
                else
                {
                    thread_name          = "PortListener_" + Einstellung.ip_adresse + ":" + port_liste.port;        /* Thread Namen zuweisen */
                    portlistener[port_i] = new PortListener();
                    portlistener[port_i].ipport(Einstellung.ip_adresse, port_liste.port, port_liste.bezeichnung, port_liste.max_verbindung, thread_name);
                    noc_thread[pos]              = new Thread(portlistener[port_i].rennen);
                    noc_thread[pos].Name         = thread_name;
                    noc_thread[pos].Priority     = ThreadPriority.AboveNormal; /* eine Stufe unter Höchste Priorität vergeben was Thread hat */
                    noc_thread[pos].IsBackground = true;                       /* Thread läuft im Backround  deklarieren ( System räumt bei nicht beenden des Thread selber diesen auf )  */
                    pos++;
                    port_i++;
                }
            }


            protokoll.erstellen(debuger.block(), proto_gruppe, "Thread werden jetzt alle gestartet. Anzahl: " + pos, debuger.klasse(), debuger.path(), debuger.dateiName(), debuger.funktion(), debuger.zeile(), false);                   /* Protokoll erstellen */

            for (int i = 0; i < pos; i++)
            {
                noc_thread[i].Start();         /* Alle Thread starten */
            }

            protokoll.erstellen(debuger.block(), proto_gruppe, "Thread werden alle jetzt Überwacht bis diese Beendet werden. ( Join() )", debuger.klasse(), debuger.path(), debuger.dateiName(), debuger.funktion(), debuger.zeile(), false); /* Protokoll erstellen */

            Thread.Sleep(2000);                                                                                                                                                                                                               /* 2 Secunden Warden bis Überwachung erneut gestartet wird */

            for (int i = 0; i < pos; i++)
            {
                if (noc_thread[i].IsAlive == false)
                {                                                                                                                                                                                                                        /* Fehlerhafte Thread finden und Protokolieren und Info ausgeben */
                    Console.BackgroundColor = ConsoleColor.Magenta;                                                                                                                                                                      /* Hintergrund Farbe zuweisen */
                    Console.ForegroundColor = ConsoleColor.Black;                                                                                                                                                                        /* Text Frabe zuweisen */
                    Console.WriteLine("\n\n Thread wure unerwartet Beendet. Name: " + noc_thread[i].Name + "\n");
                    Console.ResetColor();                                                                                                                                                                                                /* auf Standart Farbzuweisung gehen zurückgehen */
                    protokoll.erstellen(debuger.block(), proto_gruppe, "Thread wure unerwartet Beendet. Name: " + noc_thread[i].Name, debuger.klasse(), debuger.path(), debuger.dateiName(), debuger.funktion(), debuger.zeile(), true); /* Protokoll erstellen */
                }
                else
                {
                }
            }

            for (int i = 0; i < pos; i++)
            {
                if (noc_thread[i].IsAlive)
                {                         /* Nur Aktive überwachen wo alles OK war */
                    noc_thread[i].Join(); /* Prüft ob Thread beendet wurden wenn nicht Wartet System bis Threads ALLE beendet wurden  */
                }
                else
                {
                }
            }
        }