Beispiel #1
0
        public static bool polaczenieClient(ref UdpClient klient)
        {
            byte[]     data;
            int        port;
            DateTime   ZC;
            string     dec;
            IPEndPoint ip = new IPEndPoint(IPAddress.Any, 11000);

            Console.WriteLine("Podaj adres IP odbiorcy: ");
            string IP = Console.ReadLine();

            Console.WriteLine("Podaj port odbiorcy: ");
            try { port = Convert.ToInt32(Console.ReadLine()); }
            catch (FormatException e) { Console.WriteLine(e.Message); port = 0; }
            string[] spr = IP.Split('.');
            while (true)
            {
                if (port < 65535 && port > 1023 && spr.Length == 4 && IP != "0.0.0.0") //Sprawdzenie poprawności formy podanych parametrów
                {
                    string wiadomosc = string.Empty;
                    ZC         = DateTime.Now;
                    wiadomosc += "ZC: " + ZC.ToString("dd/MM/yyyy HH-mm-sstt") + "%ID: BRAK%NS: 0%OP: POLACZ%";  // komunikat poczatkowy przed nadaniem ID sesji
                    klient     = new UdpClient(IP, port);
                    data       = Encoding.ASCII.GetBytes(wiadomosc);
                    klient.Send(data, data.Length);
                    return(true);
                }
                else
                {
                    Console.WriteLine("Nie udalo sie nawiazac polaczenia. Czy chcesz spróbować ponownie?(0/1)");
                    dec = Console.ReadLine();
                    if (dec == "1")
                    {
                        return(polaczenieClient(ref klient));
                    }
                    else if (dec == "0")
                    {
                        return(false);
                    }
                    else
                    {
                        Console.WriteLine("Niepoprawna odpowiedz");
                    }
                }
            }
        }
Beispiel #2
0
        public static void operacje(UdpClient client, IPEndPoint ip, byte[] data, int ID)
        {
            string OP = string.Empty, ST = string.Empty, ER = string.Empty, OH = string.Empty;
            int    NS = 0, count = 0, n = 0, bigbrain = 0;
            double liczba1 = 0;
            double wynik = 0;
            double liczba2 = 0;
            string operacja = string.Empty, wiadomosc = string.Empty;

            string[][] AllSplits = new string[100][];
            Console.WriteLine("Podaj operację: "); //zapytanie o operację
            operacja = Console.ReadLine();
            DateTime    ZC;
            List <Wpis> Historia = new List <Wpis>();
            Wpis        noname   = new Wpis();

            try //zapytanie o liczby w zależności od wybranej operacji
            {
                //w przypadku silni i hisid potrzebujemy tylko 1 liczby
                if (operacja.ToLower() == "silnia" || operacja.ToLower() == "hisid")
                {
                    Console.WriteLine("Podaj liczbę 1: ");
                    liczba1 = Convert.ToDouble(Console.ReadLine());
                    NS      = 2;
                }
                //podawanie liczb
                else if (operacja.ToLower() == "mnozenie" || operacja.ToLower() == "dzielenie" || operacja.ToLower() == "odejmowanie" || operacja.ToLower() == "dodawanie" || operacja.ToLower() == "hisido")
                {
                    Console.WriteLine("Podaj liczbę 1: ");
                    liczba1 = Convert.ToDouble(Console.ReadLine());

                    Console.WriteLine("Podaj liczbę 2: ");
                    liczba2 = Convert.ToDouble(Console.ReadLine());

                    NS = 3;
                }

                else
                {
                    throw new Exception("Nieznana operacja!!!");
                }
            }
            //wysyłanie komunikatów
            catch (Exception ex) { Console.WriteLine($"Wystąpił błąd: {ex.Message}, typ: {ex.GetType()}"); operacje(client, ip, data, ID); return; }
            ZC         = DateTime.Now;
            wiadomosc += "ZC: " + ZC.ToString("dd/MM/yyyy HH-mm-sstt") + "%ID: " + ID + "%NS: " + NS + "%OP: " + operacja.ToLower() + "%"; //operacja
            data       = Encoding.ASCII.GetBytes(wiadomosc);
            client.Send(data, data.Length);
            wiadomosc = string.Empty;

            NS--;
            ZC         = DateTime.Now;
            wiadomosc += "ZC: " + ZC.ToString("dd/MM/yyyy HH-mm-sstt") + "%ID: " + ID + "%NS: " + NS + "%ST: brak%"; //status
            data       = Encoding.ASCII.GetBytes(wiadomosc);
            client.Send(data, data.Length);
            wiadomosc = string.Empty;

            NS--;
            ZC         = DateTime.Now;
            wiadomosc += "ZC: " + ZC.ToString("dd/MM/yyyy HH-mm-sstt") + "%ID: " + ID + "%NS: " + NS + "%L1: " + liczba1 + "%"; //liczba 1
            data       = Encoding.ASCII.GetBytes(wiadomosc);
            client.Send(data, data.Length);
            wiadomosc = string.Empty;

            NS--;

            if (NS == 0)
            {
                ZC         = DateTime.Now;
                wiadomosc += "ZC: " + ZC.ToString("dd/MM/yyyy HH-mm-sstt") + "%ID: " + ID + "%NS: " + NS + "%L2: " + liczba2 + "%"; //liczba 2
                data       = Encoding.ASCII.GetBytes(wiadomosc);
                client.Send(data, data.Length);
                wiadomosc = string.Empty;
            }



            while (true) //oczekiwanie na zwrotne informacje
            {
                data = client.Receive(ref ip);

                string   dane  = Encoding.ASCII.GetString(data, 0, data.Length);
                string[] split = dane.Split(new char[] { ':', '%' });
                AllSplits[count] = split;
                count++;
                if (Convert.ToInt32(split[5]) == 0)
                {
                    break;
                }
            }
            foreach (string[] i in AllSplits) //segregacja informacji z komunikatów
            {
                if (OH.ToLower() == " hisid" || OH.ToLower() == " hisido")
                {
                    if (i[6] == "OP")
                    {
                        noname.operacja = i[7];
                    }
                    else if (i[6] == "ST")
                    {
                        ST = i[7];
                    }
                    else if (i[6] == "L1")
                    {
                        noname.liczba1 = i[7]; n++;
                    }
                    else if (i[6] == "L2")
                    {
                        noname.liczba2 = i[7]; n++;
                    }
                    else if (i[6] == "LW")
                    {
                        noname.wynik = i[7]; n++;
                    }
                    else if (i[6] == "IDO")
                    {
                        noname.IDO = Convert.ToInt32(i[7]); n++;
                    }
                    else if (i[6] == "ER")
                    {
                        ER = i[7];
                    }
                    if ((noname.operacja == " silnia" && n == 3) || n == 4)
                    {
                        n = 0; Historia.Add(noname); noname = new Wpis();
                    }
                }
                else
                {
                    if (i == null)
                    {
                        break;
                    }
                    if (i[6] == "OP")
                    {
                        OP = i[7]; if (OP.ToLower() == " hisid" || OP.ToLower() == " hisido")
                        {
                            OH = OP;
                        }
                    }
                    else if (i[6] == "ST")
                    {
                        ST = i[7];
                    }
                    else if (i[6] == "L1")
                    {
                        liczba1 = Convert.ToInt32(i[7]);
                    }
                    else if (i[6] == "L2")
                    {
                        liczba2 = Convert.ToInt32(i[7]);
                    }
                    else if (i[6] == "LW")
                    {
                        wynik = Convert.ToDouble(i[7]);
                    }
                }
                bigbrain++;
                if (bigbrain == count)
                {
                    bigbrain = 0; break;
                }
            }
            if (ST == " ERROR_0")
            {
                Console.WriteLine("Wystapil blad : [Niepoprawny format]");
            }
            else if (ST == " ERROR_1")
            {
                Console.WriteLine("Wystapil blad : [Dzielenie przez zero]");
            }
            else if (ST == " ERROR_2")
            {
                Console.WriteLine("Wystapil blad : [Brak dostępu]");
            }
            else if (ST == " ERROR_3")
            {
                Console.WriteLine("Wystapil blad : [Brak operacji]");
            }
            else if (ST == " ERROR_4")
            {
                Console.WriteLine("Wystapil blad : [Przekroczono rozmiar stosu]");
            }
            else if (OH.ToLower() == " hisid" || OH.ToLower() == " hisido")
            {
                Console.WriteLine("");
                Console.WriteLine("Historia obliczen dla sesji {0}.:", ID); //Wyświetlanie Historii obliczeń
                foreach (var i in Historia)
                {
                    Console.WriteLine("----------------Obliczenie {0}.------------------", i.IDO);
                    Console.WriteLine("Operacja :{0}", i.operacja);
                    Console.WriteLine("Liczba 1: {0}", i.liczba1);
                    if (i.operacja.ToLower() != "  silnia")
                    {
                        Console.WriteLine("Liczba 2: {0}", i.liczba2);
                    }
                    Console.WriteLine("Wynik: {0}", i.wynik);
                }
                Console.WriteLine("---------------------------------------------");
                OH = String.Empty;
            }
            else
            {
                Console.WriteLine("---------------------------------------------");
                Console.WriteLine("Operacja: {0}", OP);
                Console.WriteLine("Wynik: {0} ", wynik); //Wyświetlenie wyniku obliczeń
                Console.WriteLine("---------------------------------------------");
            }
        }
Beispiel #3
0
        public static void obliczenia(UdpClient server, IPEndPoint ip, byte[] data, int ID, ref int IDO, List <Wpis> Historia) //Funkcja odbierająca komunikaty dotyczące obliczeń i przeprowadzająca je
        {
            //zmiennie niezbedne do wykonania
            DateTime ZC;
            string   wiadomosc = string.Empty, OP = string.Empty, dane, ST = "OK";
            int      l1 = 0, l2 = 0;
            double   wynik = 0;

            string[][] AllSplits = new string[4][];
            int        n = 0, NS;
            Wpis       temp = new Wpis();

            temp.ID = ID;
            while (true)  //oczekiwanie na komunikaty okreslajace operacje oraz liczby na których ma ona być przeprowadzona
            {
                data = server.Receive(ref ip);
                dane = Encoding.ASCII.GetString(data, 0, data.Length);
                string[] split = dane.Split(new char[] { ':', '%' });
                AllSplits[n] = split;
                Console.WriteLine(dane);
                n++;
                if (Convert.ToInt32(split[5]) <= 0)
                {
                    break;
                }
            }
            foreach (string[] i in AllSplits) //interpretacja komunikatow
            {
                if (i == null)
                {
                    break;
                }
                if (i[6] == "OP")
                {
                    temp.operacja = OP = i[7];
                }
                else if (i[6] == "L1")
                {
                    try
                    {
                        temp.liczba1 = i[7];
                        l1           = Convert.ToInt32(i[7]);
                    }
                    catch (Exception e)
                    {
                        if (OP.ToLower() != " hisid" && OP.ToLower() != " hisido")
                        {
                            temp.IDO = IDO++;
                            obslugaBledow.ObslugaBledow(server, e, ref ID, OP, ip, temp, ref Historia, 0);
                        }
                        else
                        {
                            obslugaBledow.ObslugaBledow(server, e, ref ID, OP, ip, 0);
                        }
                        return;
                    }
                }
                else if (i[6] == "L2")
                {
                    try
                    {
                        temp.liczba2 = i[7];
                        l2           = Convert.ToInt32(i[7]);
                    }
                    catch (Exception e)
                    {
                        if (OP.ToLower() != " hisid" && OP.ToLower() != " hisido")
                        {
                            temp.IDO = IDO++;
                            obslugaBledow.ObslugaBledow(server, e, ref ID, OP, ip, temp, ref Historia, 0);
                        }
                        else
                        {
                            obslugaBledow.ObslugaBledow(server, e, ref ID, OP, ip, 0);
                        }
                        return;
                    }
                }
            }

            // obliczanie wynikow
            if (OP.ToLower() == " mnozenie")
            {
                wynik    = Mnozenie(l1, l2);
                temp.IDO = IDO++;
            }
            else if (OP.ToLower() == " dzielenie")
            {
                try
                {
                    wynik    = l1 / l2;
                    temp.IDO = IDO++;
                }
                catch (DivideByZeroException e)
                {
                    temp.IDO = IDO++;
                    obslugaBledow.ObslugaBledow(server, e, ref ID, OP, ip, temp, ref Historia, 1);
                    return;
                }
            }
            else if (OP.ToLower() == " dodawanie")
            {
                wynik    = Dodawanie(l1, l2);
                temp.IDO = IDO++;
            }
            else if (OP.ToLower() == " odejmowanie")
            {
                wynik    = Odejmowanie(l1, l2);
                temp.IDO = IDO++;
            }
            // wywolanie przez uzytkownika podania calej historii
            else if (OP.ToLower() == " hisid")
            {
                try
                {
                    if (l1 != ID)
                    {
                        throw new Exception("brakDostepu!");
                    }
                    else
                    {
                        His.HisID(Historia, l1, server, ip);
                        return;
                    }
                }
                catch (Exception e)
                {
                    obslugaBledow.ObslugaBledow(server, e, ref ID, OP, ip, 2);
                    return;
                }
            }
            //wywolanie przez uzytkownika podania historii obliczenia
            else if (OP.ToLower() == " hisido")
            {
                try
                {
                    if (l1 != ID)
                    {
                        throw new Exception("2");
                    }
                    else if (l2 > IDO - 1)
                    {
                        throw new Exception("3");
                    }
                    else
                    {
                        His.HisIDO(Historia, l1, l2, server, ip);
                        return;
                    }
                }
                catch (Exception e)
                {
                    obslugaBledow.ObslugaBledow(server, e, ref ID, OP, ip, Convert.ToInt32(e.Message));
                    return;
                }
            }
            else if (OP.ToLower() == " silnia")
            {
                try
                {
                    temp.IDO = IDO++;
                    if (l1 >= 12 || l1 < 0)
                    {
                        throw new Exception("4");
                    }
                    wynik = Silnia(l1);
                }
                catch (Exception e)
                {
                    obslugaBledow.ObslugaBledow(server, e, ref ID, OP, ip, temp, ref Historia, 4);
                    return;
                }
            }
            temp.wynik = Convert.ToString(wynik);
            if (OP.ToLower() != " hisido" || OP.ToLower() != " hisid")
            {
                Historia.Add(temp);
            }
            NS = 2;
            //przygotowanie komunikatow
            Console.WriteLine(wynik);
            ZC         = DateTime.Now;
            wiadomosc  = string.Empty;
            wiadomosc += "ZC: " + ZC.ToString("dd/MM/yyyy HH-mm-sstt") + "%ID: " + ID + "%NS: " + NS + "%OP: " + OP.ToLower() + "%"; //odsyłanie komunikatu z rodzajem operacji , jej statusem i wynikiem
            data       = Encoding.ASCII.GetBytes(wiadomosc);
            server.Send(data, data.Length, ip);
            wiadomosc = string.Empty;

            NS--;
            ZC         = DateTime.Now;
            wiadomosc += "ZC: " + ZC.ToString("dd/MM/yyyy HH-mm-sstt") + "%ID: " + ID + "%NS: " + NS + "%ST: " + ST + "%";
            data       = Encoding.ASCII.GetBytes(wiadomosc);
            server.Send(data, data.Length, ip);
            wiadomosc = string.Empty;

            NS--;
            ZC         = DateTime.Now;
            wiadomosc += "ZC: " + ZC.ToString("dd/MM/yyyy HH-mm-sstt") + "%ID: " + ID + "%NS: " + NS + "%LW: " + wynik + "%";
            data       = Encoding.ASCII.GetBytes(wiadomosc);
            server.Send(data, data.Length, ip);
            wiadomosc = string.Empty;
        }
Beispiel #4
0
        static void obliczenia(UdpClient server, IPEndPoint ip, byte[] data, int ID) //Funkcja odbierająca komunikaty dotyczące obliczeń i przeprowadzająca je
        {
            DateTime ZC;
            string   wiadomosc = string.Empty, OP = string.Empty, dane, ST = "OK";
            int      l1 = 0, l2 = 0;
            double   wynik = 0;

            string[][] AllSplits = new string[4][];
            int        n = 0, NS;

            while (true)  //oczekiwanie na komunikaty okreslajace operacje oraz liczby na których ma ona być przeprowadzona
            {
                data = server.Receive(ref ip);
                dane = Encoding.Unicode.GetString(data, 0, data.Length);
                string[] split = dane.Split(new char[] { ':', '%' });
                AllSplits[n] = split;
                Console.WriteLine(dane);
                n++;
                if (Convert.ToInt32(split[5]) <= 0)
                {
                    break;
                }
            }
            foreach (string[] i in AllSplits) //interpretacja komunikatow
            {
                if (i == null)
                {
                    break;
                }
                if (i[6] == "OP")
                {
                    OP = i[7];
                }
                else if (i[6] == "L1")
                {
                    try { l1 = Convert.ToInt32(i[7]); }
                    catch (FormatException e) { ObslugaBledow(server, e, ID, OP, ip); return; }
                }
                else if (i[6] == "L2")
                {
                    try { l2 = Convert.ToInt32(i[7]); }
                    catch (FormatException e) { ObslugaBledow(server, e, ID, OP, ip); return; }
                }
            }
            if (OP.ToLower() == "mnozenie")
            {
                wynik = Mnozenie(l1, l2);
            }
            else if (OP.ToLower() == "dzielenie")
            {
                try { wynik = l1 / l2; }
                catch (DivideByZeroException e) { ObslugaBledow(server, e, ID, OP, ip); return; }
            }
            else if (OP.ToLower() == "dodawanie")
            {
                wynik = Dodawanie(l1, l2);
            }
            else if (OP.ToLower() == "odejmowanie")
            {
                wynik = Odejmowanie(l1, l2);
            }
            else if (OP.ToLower() == "silnia")
            {
                try { wynik = Silnia(l1); }
                catch (StackOverflowException e) { ObslugaBledow(server, e, ID, OP, ip); return; }
            }
            NS = 2;

            Console.WriteLine(wynik);
            ZC         = DateTime.Now;
            wiadomosc  = string.Empty;
            wiadomosc += "ZC:" + ZC.ToString("HH-mm-sstt") + "%ID:" + ID + "%NS:" + NS + "%OP:" + OP.ToLower() + "%"; //odsyłanie komunikatu z rodzajem operacji , jej statusem i wynikiem
            data       = Encoding.Unicode.GetBytes(wiadomosc);
            server.Send(data, data.Length, ip);
            wiadomosc = string.Empty;

            NS--;
            ZC         = DateTime.Now;
            wiadomosc += "ZC:" + ZC.ToString("HH-mm-sstt") + "%ID:" + ID + "%NS:" + NS + "%ST:" + ST + "%";
            data       = Encoding.Unicode.GetBytes(wiadomosc);
            server.Send(data, data.Length, ip);
            wiadomosc = string.Empty;

            NS--;
            ZC         = DateTime.Now;
            wiadomosc += "ZC:" + ZC.ToString("HH-mm-sstt") + "%ID:" + ID + "%NS:" + NS + "%LW:" + wynik + "%";
            data       = Encoding.Unicode.GetBytes(wiadomosc);
            server.Send(data, data.Length, ip);
            wiadomosc = string.Empty;
        }
Beispiel #5
0
        static void Main(string[] args)                                                                         //TU JEST MAIN TU JEST MAIN TU JEST MAIN TU JEST MAIN
        {
            UdpClient client = new UdpClient();

            if (Pol.polaczenieClient(ref client) == false)
            {
                return;                                           // użytkownik podaje IP oraz port
            }
            IPEndPoint ip = new IPEndPoint(IPAddress.Any, 11000);

            int    n  = 0;
            int    ID = 0;
            string odp;

            byte[]     data;
            string[][] AllSplits = new string[4][];
            DateTime   ZC;

            while (true) //oczekiwanie na nadanie ID
            {
                data = client.Receive(ref ip);

                string   dane  = Encoding.ASCII.GetString(data, 0, data.Length);
                string[] split = dane.Split(new char[] { ':', '%' });
                AllSplits[n] = split;
                n++;
                if (Convert.ToInt32(split[5]) <= 0)
                {
                    n = 0;

                    try //Potwierdzenie nadania ID
                    {
                        ID = Convert.ToInt32(split[3]);
                        ZC = DateTime.Now;
                        Console.WriteLine("ID Twojej sesji to: {0}", ID);
                        Console.WriteLine("");
                        string temp = "ZC: " + ZC.ToString("dd/MM/yyyy HH-mm-sstt") + "%ID: " + ID + "%NS: 1%OP: NadanieID%";
                        data = Encoding.ASCII.GetBytes(temp);
                        client.Send(data, data.Length);
                        temp = string.Empty;
                        ZC   = DateTime.Now;
                        temp = "ZC: " + ZC.ToString("dd/MM/yyyy HH-mm-sstt") + "%ID: " + ID + "%NS: 0%ST: OK%";
                        data = Encoding.ASCII.GetBytes(temp);
                        client.Send(data, data.Length);
                    }
                    catch (Exception) { }
                    break;
                }
            }
            Op.operacje(client, ip, data, ID); //wybranie operacji i wysłanie odpowiednich komunikatów do serwera

            do                                 //zapytanie o kontynuacje pracy
            {
                Console.WriteLine("Czy chcesz wykonać ponowne obliczenia ? (0/1)");
                odp = Console.ReadLine();
                if (odp == "1")
                {
                    ZC = DateTime.Now;
                    string wiadomosc = string.Empty;
                    wiadomosc += "ZC: " + ZC.ToString("dd/MM/yyyy HH-mm-sstt") + "%ID: " + ID + "%NS: 1%OP: PONOW% ";
                    data       = Encoding.ASCII.GetBytes(wiadomosc);
                    client.Send(data, data.Length);

                    wiadomosc = string.Empty;
                    ZC        = DateTime.Now;
                    wiadomosc = "ZC: " + ZC.ToString("dd/MM/yyyy HH-mm-sstt") + "%ID: " + ID + "%NS: 0%ST: BRAK%";
                    data      = Encoding.ASCII.GetBytes(wiadomosc);
                    client.Send(data, data.Length);
                    wiadomosc = string.Empty;

                    Op.operacje(client, ip, data, ID);
                }
                else if (odp == "0")
                {
                    string wiadomosc = string.Empty;
                    ZC         = DateTime.Now;
                    wiadomosc += "ZC: " + ZC.ToString("dd/MM/yyyy HH-mm-sstt") + "%ID: " + ID + "%NS: 1%OP: KONIEC%";
                    data       = Encoding.ASCII.GetBytes(wiadomosc);
                    client.Send(data, data.Length);

                    wiadomosc = string.Empty;
                    ZC        = DateTime.Now;
                    wiadomosc = "ZC: " + ZC.ToString("dd/MM/yyyy HH-mm-sstt") + "%ID: " + ID + "%NS: 0%ST: BRAK%";
                    data      = Encoding.ASCII.GetBytes(wiadomosc);
                    client.Send(data, data.Length);
                    wiadomosc = string.Empty;
                    client.Close();
                }
                else
                {
                    Console.WriteLine("Niepoprawna odpowiedź");
                }
            } while (odp != "0");
        }
Beispiel #6
0
        //KLIENT
        // ZC:czas%ID:0%NS:2%OP:hisid%
        // ZC:czas%ID:0%NS:1%ST:BRAK%
        // ZC:czas%ID:0%NS:0%L1:1%

        //SERWER
        // ZC:czas%ID:0%NS:0%OP:hisid%
        // ZC:czas%ID:0%NS:0%ST:OK% /  // ZC:czas%ID:0%NS:0%ST:bdost%
        // ZC:czas%ID:0%NS:0%OP:mnozenie%
        // ZC:czas%ID:0%NS:0%IDO:0%
        // ZC:czas%ID:0%NS:0%L1:2%
        // ZC:czas%ID:0%NS:0%L2:3%
        // ZC:czas%ID:0%NS:0%LW:6%
        public static void HisID(List <Wpis> Historia, int ID, UdpClient server, IPEndPoint ip)
        {
            int      NS;
            DateTime ZC;
            string   wiadomosc;

            byte[]      data;
            int         silnia = 0;
            List <Wpis> temp   = new List <Wpis>();

            foreach (var i in Historia) //odczyt historii danej sesji
            {
                if (i.ID == ID)
                {
                    temp.Add(i);
                    if (i.operacja == "silnia")
                    {
                        silnia++;
                    }
                }
            }
            NS         = (temp.Count() * 5) - silnia + 1; //obliczenie ilosci komunikatow do wyslania
            ZC         = DateTime.Now;
            wiadomosc  = string.Empty;
            wiadomosc += "ZC: " + ZC.ToString("dd/MM/yyyy HH-mm-sstt") + "%ID: " + ID + "%NS: " + NS + "%OP: HISID%"; //odsyłanie komunikatu sygnalizujacego przeslanie historii po id sesji
            data       = Encoding.ASCII.GetBytes(wiadomosc);
            server.Send(data, data.Length, ip);
            wiadomosc = string.Empty;

            NS--;
            ZC         = DateTime.Now;
            wiadomosc  = string.Empty;
            wiadomosc += "ZC: " + ZC.ToString("dd/MM/yyyy HH-mm-sstt") + "%ID: " + ID + "%NS: " + NS + "%ST: OK%"; //odsyłanie komunikatu ze statusem
            data       = Encoding.ASCII.GetBytes(wiadomosc);
            server.Send(data, data.Length, ip);
            wiadomosc = string.Empty;

            NS--;
            foreach (var i in temp)
            {
                ZC         = DateTime.Now;
                wiadomosc  = string.Empty;
                wiadomosc += "ZC: " + ZC.ToString("dd/MM/yyyy HH-mm-sstt") + "%ID: " + ID + "%NS: " + NS + "%OP: " + i.operacja + "%"; //odsyłanie komunikatu z rodzajem operacji
                data       = Encoding.ASCII.GetBytes(wiadomosc);
                server.Send(data, data.Length, ip);
                wiadomosc = string.Empty;

                NS--;

                ZC         = DateTime.Now;
                wiadomosc  = string.Empty;
                wiadomosc += "ZC:" + ZC.ToString("dd/MM/yyyy HH-mm-sstt") + "%ID: " + ID + "%NS: " + NS + "%IDO: " + i.IDO + "%"; //odsyłanie komunikatu z ID operacji
                data       = Encoding.ASCII.GetBytes(wiadomosc);
                server.Send(data, data.Length, ip);
                wiadomosc = string.Empty;

                NS--;

                ZC         = DateTime.Now;
                wiadomosc  = string.Empty;
                wiadomosc += "ZC: " + ZC.ToString("dd/MM/yyyy HH-mm-sstt") + "%ID: " + ID + "%NS: " + NS + "%L1: " + i.liczba1 + "%"; //odsyłanie komunikatu z 1. liczba
                data       = Encoding.ASCII.GetBytes(wiadomosc);
                server.Send(data, data.Length, ip);
                wiadomosc = string.Empty;

                NS--;
                if (i.operacja != "silnia")
                {
                    ZC         = DateTime.Now;
                    wiadomosc  = string.Empty;
                    wiadomosc += "ZC: " + ZC.ToString("dd/MM/yyyy HH-mm-sstt") + "%ID: " + ID + "%NS: " + NS + "%L2: " + i.liczba2 + "%"; //odsyłanie komunikatu z 2. liczba
                    server.Send(data, data.Length, ip);
                    wiadomosc = string.Empty;

                    NS--;
                }
                ZC         = DateTime.Now;
                wiadomosc  = string.Empty;
                wiadomosc += "ZC: " + ZC.ToString("dd/MM/yyyy HH-mm-sstt") + "%ID: " + ID + "%NS: " + NS + "%LW: " + i.wynik + "%"; //odsyłanie komunikatu z wynikiem
                data       = Encoding.ASCII.GetBytes(wiadomosc);
                server.Send(data, data.Length, ip);
                wiadomosc = string.Empty;

                NS--;
            }
        }
Beispiel #7
0
        static void Main(string[] args)                                                                         //TU JEST MAIN TU JEST MAIN TU JEST MAIN TU JEST MAIN
        {
            UdpClient client = polaczenieClient();

            if (client == new UdpClient("110.0.0.0", 2137))
            {
                return;
            }
            IPEndPoint ip = new IPEndPoint(IPAddress.Any, 11000);

            //client.Connect("127.0.0.1", 11000);
            int    n  = 0;
            int    ID = 0;
            string odp;

            byte[]     data;
            string[][] AllSplits = new string[4][];
            DateTime   ZC;

            while (true)
            {
                data = client.Receive(ref ip);

                string   dane  = Encoding.Unicode.GetString(data, 0, data.Length);
                string[] split = dane.Split(new char[] { ':', '%' });
                AllSplits[n] = split;
                Console.WriteLine(dane);
                n++;
                if (Convert.ToInt32(split[5]) <= 0)
                {
                    n = 0;

                    try
                    {
                        ID = Convert.ToInt32(split[3]);
                        ZC = DateTime.Now;
                        string temp = "ZC:" + ZC.ToString("HH-mm-sstt") + "%ID:" + ID + "%NS:1%OP:NadanieID%";
                        data = Encoding.Unicode.GetBytes(temp);
                        client.Send(data, data.Length);
                        temp = string.Empty;
                        ZC   = DateTime.Now;
                        temp = "ZC:" + ZC.ToString("HH-mm-sstt") + "%ID:" + ID + "%NS:0%ST:OK%";
                        data = Encoding.Unicode.GetBytes(temp);
                        client.Send(data, data.Length);
                    }
                    catch (Exception) { }
                    break;
                }
            }
            operacje(client, ip, data, ID);

            do
            {
                Console.WriteLine("Czy chcesz wykonać ponowne obliczenia ? (0/1)");
                odp = Console.ReadLine();
                if (odp == "1")
                {
                    ZC = DateTime.Now;
                    string wiadomosc = string.Empty;
                    wiadomosc += "ZC:" + ZC.ToString("HH-mm-sstt") + "%ID:" + ID + "%NS:1%OP:PONOW%";
                    data       = Encoding.Unicode.GetBytes(wiadomosc);
                    client.Send(data, data.Length);

                    wiadomosc = string.Empty;
                    ZC        = DateTime.Now;
                    wiadomosc = "ZC:" + ZC.ToString("HH-mm-sstt") + "%ID:" + ID + "%NS:0%ST:BRAK%";
                    data      = Encoding.Unicode.GetBytes(wiadomosc);
                    client.Send(data, data.Length);
                    wiadomosc = string.Empty;

                    operacje(client, ip, data, ID);
                }
                else if (odp == "0")
                {
                    string wiadomosc = string.Empty;
                    ZC         = DateTime.Now;
                    wiadomosc += "ZC:" + ZC.ToString("HH-mm-sstt") + "%ID:" + ID + "%NS:1%OP:KONIEC%";
                    data       = Encoding.Unicode.GetBytes(wiadomosc);
                    client.Send(data, data.Length);

                    wiadomosc = string.Empty;
                    ZC        = DateTime.Now;
                    wiadomosc = "ZC:" + ZC.ToString("HH-mm-sstt") + "%ID:" + ID + "%NS:0%OST:BRAK%";
                    data      = Encoding.Unicode.GetBytes(wiadomosc);
                    client.Send(data, data.Length);
                    wiadomosc = string.Empty;
                    client.Close();
                }
                else
                {
                    Console.WriteLine("Niepoprawna odpowiedź");
                }
            } while (odp != "0");
        }
Beispiel #8
0
        static void operacje(UdpClient client, IPEndPoint ip, byte[] data, int ID)
        {
            string OP, ST = string.Empty, ER = string.Empty;
            int    NS = 0, count = 0;
            double liczba1 = 0;
            double wynik = 0;
            double liczba2 = 0;
            string operacja = string.Empty, wiadomosc = string.Empty;

            string[][] AllSplits = new string[4][];
            Console.WriteLine("Podaj operację: ");
            operacja = Console.ReadLine();
            DateTime ZC;

            try
            {
                if (operacja.ToLower() == "silnia")
                {
                    Console.WriteLine("Podaj liczbę 1: ");
                    liczba1 = Convert.ToDouble(Console.ReadLine());
                    NS      = 2;
                }

                else if (operacja.ToLower() == "mnozenie" || operacja.ToLower() == "dzielenie" || operacja.ToLower() == "odejmowanie" || operacja.ToLower() == "dodawanie")
                {
                    Console.WriteLine("Podaj liczbę 1: ");
                    liczba1 = Convert.ToDouble(Console.ReadLine());

                    Console.WriteLine("Podaj liczbę 2: ");
                    liczba2 = Convert.ToDouble(Console.ReadLine());

                    NS = 3;
                }

                else
                {
                    throw new Exception("Nieznana operacja!!!");
                }
            }

            catch (Exception ex) { Console.WriteLine($"Wystąpił błąd: {ex.Message}, typ: {ex.GetType()}"); operacje(client, ip, data, ID); return; }
            ZC         = DateTime.Now;
            wiadomosc += "ZC:" + ZC.ToString("HH-mm-sstt") + "%ID:" + ID + "%NS:" + NS + "%OP:" + operacja.ToLower() + "%";
            data       = Encoding.Unicode.GetBytes(wiadomosc);
            client.Send(data, data.Length);
            wiadomosc = string.Empty;

            NS--;
            ZC         = DateTime.Now;
            wiadomosc += "ZC:" + ZC.ToString("HH-mm-sstt") + "%ID:" + ID + "%NS:" + NS + "%ST:brak%";
            data       = Encoding.Unicode.GetBytes(wiadomosc);
            client.Send(data, data.Length);
            wiadomosc = string.Empty;

            NS--;
            ZC         = DateTime.Now;
            wiadomosc += "ZC:" + ZC.ToString("HH-mm-sstt") + "%ID:" + ID + "%NS:" + NS + "%L1:" + liczba1 + "%";
            data       = Encoding.Unicode.GetBytes(wiadomosc);
            client.Send(data, data.Length);
            wiadomosc = string.Empty;

            NS--;

            if (NS == 0)
            {
                ZC         = DateTime.Now;
                wiadomosc += "ZC:" + ZC.ToString("HH-mm-sstt") + "%ID:" + ID + "%NS:" + NS + "%L2:" + liczba2 + "%";
                data       = Encoding.Unicode.GetBytes(wiadomosc);
                client.Send(data, data.Length);
                wiadomosc = string.Empty;
            }



            while (true)
            {
                data = client.Receive(ref ip);

                string   dane  = Encoding.Unicode.GetString(data, 0, data.Length);
                string[] split = dane.Split(new char[] { ':', '%' });
                AllSplits[count] = split;
                count++;
                Console.WriteLine(dane);
                if (Convert.ToInt32(split[5]) == 0)
                {
                    count = 0; break;
                }
            }
            foreach (string[] i in AllSplits)
            {
                if (i == null)
                {
                    break;
                }
                if (i[6] == "OP")
                {
                    OP = i[7];
                }
                else if (i[6] == "ST")
                {
                    ST = i[7];
                }
                else if (i[6] == "LW")
                {
                    wynik = Convert.ToDouble(i[7]);
                }
                else if (i[6] == "ER")
                {
                    ER = i[7];
                }
            }
            if (ST.ToLower() == "error")
            {
                Console.WriteLine("Wystapil blad {0}", ER);
            }
            else
            {
                Console.WriteLine("Wynik to: {0} ", wynik);
            }
        }