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); }
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 { } } }
/* 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()); }
/* 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 { } }
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 { } }
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 */ }
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 */ } }
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 { } } }