Ejemplo n.º 1
0
        static void Main(string[] args)
        {
            METODATSHTESE objMetodShtese = new METODATSHTESE();    //krijimi i objektit te klases Metodatshtese
            char          a = 'ë';

            Console.ForegroundColor = ConsoleColor.Cyan;  //ndryshim ngjyre i tesktit
            Console.WriteLine("~____________________________________________- Klienti -_____________________________________________~\n");
            Console.ResetColor();                         //kthimi i ngjyres default
            string localhost = "127.0.0.1";               // localhost i nenkuptuar/ perveq kur shfrytezuesi deshiron ta ndyrshoje ate

            int porti = 7000;                             //porti i nenkuptuar

            Console.ForegroundColor = ConsoleColor.White; //ndryshim ngjyre i tesktit
            // dhe ta mbyllniii punen me PO
            Console.Write("A dëshironi të modifikoni emrin e serverit dhe portin?[Po/Ndonjë] ");
            Console.ForegroundColor = ConsoleColor.Cyan;           //e ndryshojme ngjyren sa here qe shfrytezuesi do te shkruaj
            string pergjigja = Console.ReadLine().Trim();

            if (pergjigja == "po")                                 //nese shfrytezuesi deshiron te modifikoj emrin dhe portin
            {
                Console.ResetColor();
                Console.Write("Shkruani ip e serverit: ");
                Console.ForegroundColor = ConsoleColor.Cyan;
                string    ipadd = Console.ReadLine();              //string [per lexim te ipadreses qe do te jep shfrytezuesi
                IPAddress address;
                if (IPAddress.TryParse(ipadd, out address))        //validimi i ip
                {
                    localhost = ipadd;
                }
                else
                {
                    Console.ForegroundColor = ConsoleColor.Red;
                    Console.Write("Ju keni dhënë IpAddress në format të gabuar!\n");
                    goto fundi;
                }
                Console.ResetColor();
                Console.Write("Shkruani portin e serverit: ");
                Console.ForegroundColor = ConsoleColor.Cyan;
                string sPorti = Console.ReadLine();              //stringu sPorti qe do te jepet nga shfrytezuesi
                if (sPorti == "")
                {
                }                                                //nese nuk jep asgje, ateher porti do te jet ai i nenkuptuar
                else
                {
                    porti = Convert.ToInt32(sPorti);             //e modifikojme portin, duke e konvertuara ne int stringun sPorti
                }
                Console.ResetColor();
            }
            else if (pergjigja == "dil")
            {
                return;
            }
perseri:    //nje etiket, e perdorim ne raste gabimi per tu kthyer te kjo pjese
            //  Console.ResetColor();
            Console.ForegroundColor = ConsoleColor.White;
            IPEndPoint ip                  = new IPEndPoint(IPAddress.Parse(localhost), porti);                          //krijimi i obj. IP PIKE FUNDORE dhe inicializimi
            Socket     socketKlienti       = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp); //obj soketi & inicia.
            string     PergjigjePerMbyllje = "";                                                                         //deklarimi i stringut, e perdorim per mbyllje te aplikacionit

            try                                                                                                          //per gabime, nese nuk mundet te konektohet do te behet 'catch'
            {
                socketKlienti.Connect(ip);                                                                               //me u konektu me at IP
            }
            catch (SocketException Errorex)                                                                              //nese hyn kodi ketu, atehere tek 'TRY' eshte kthyer vlere false
            {
                Console.WriteLine("Dështoj lidhja me serverin, ka ndodhë ky gabim (" + Errorex + ")");                   //tregon gabimin premes konsole-s
                return;                                                                                                  //dhe puna duhet te perfundoj ketu
            }

            Console.Write("Operacioni (IP, PORT, ZANORE, PRINTO, HOST, TIME, KENO, KONVERTO, FAKTORIEL, MESATARJA, RENDIT, FIEK)? "); //na shfaqe operimet
            Console.ForegroundColor = ConsoleColor.Cyan;                                                                              //kur te shkruan tani shfrytezuesi te behete ngjyra Cyan
            string sTekstiHyres = Console.ReadLine().Trim();                                                                          //merr string-un(pa zbrastira para,mbrapa) se cilin operacion po e zgjedh

            int dyHpasira = sTekstiHyres.IndexOf("  ");                                                                               //gjene indeksin nese ka ndonje karakter 2 zbrastira apo 3 apo 4...

            if (sTekstiHyres == "")                                                                                                   //nese tekstihyres eshte i pambushur, dmth kur ai vetem shtyp enter
            {
                Console.ForegroundColor = ConsoleColor.Red;                                                                           //i qasemi klases Console nepermes emrit dhe kalojme ne vetin e saj pastaj ja ndyshojm ngjyren
                Console.WriteLine("Ju lutemi, shkruani diqka");                                                                       //paralajmrojme klientin
                Console.ResetColor();                                                                                                 //e kthejme ngjyren ashtu siq eshte default nga konsola
                goto perseri;                                                                                                         //do te thote, detyrohet te shkoje te etiketa 'perseri'
            }
            else if (dyHpasira > 0)                                                                                                   //nese ka gjete "  " sbashku ose me shume zbras. te stringu hyres ateher kete s'do ta lejojme
            {
                int sa = 2;                                                                                                           //nje variabel ndihmese vetem sa per ilustrim
                Console.ForegroundColor = ConsoleColor.Red;                                                                           //ndryshim ngjyre te parapvijes se tekstit
                Console.WriteLine("Teksti juaj ka {0} zbrastira(sebashku). Ju lutemi shkruani me vetem 1(nje) zbrastire\n", sa);      //ilustrimi i shtypjes se formatizuar
                Console.ResetColor();                                                                                                 //kgthe ngjyren
                goto perseri;                                                                                                         //dergo te 'perseri' dhe jepi mundesi prape te zgjedhe opsionin
            }
            ////--------------------------------------------------------------------------------------------------------------////
            //                                                                                                                  //
            //             këtu fillojnë METOAT SHTESE të cilat nuk varen nga Serveri, kthehen nga Klienti                      //
            //                                                                                                                  //
            ////--------------------------------------------------------------------------------------------------------------////

            else if (sTekstiHyres.ToLower().IndexOf("mesatarja") == 0)                  // nsese indeksi 0 i stringut sTekstihyres eshte 'mesatarja' (pra nese fillon me te)
            {                                                                           // -------- ne server kemi metoden e cila duhet te shkruhet mesatarja {hapsire} numri1 {presje,} numri2... dhe mundemi pakufi numra
                int zbrastire = sTekstiHyres.Count(c => " ".Contains(Char.ToLower(c))); //1
                if (zbrastire > 1)                                                      //nje lloje validimi se sa zbrastira lejohen, sepse ketu nuk guxon te kete zbrastire mes notave
                {
                    Console.WriteLine("Teksti juaj ka " + zbrastire + " zbrastira. Ju lutemi shkruani me vetem 1(nje) zbrastire\n");
                }
                else
                {
                    Console.WriteLine("Pergjigja: " + objMetodShtese.MESATARJA(sTekstiHyres)); //kthehet pergjigja me ndihmen e metodes mesatarja
                }
                goto fundi;                                                                    //shko ne fund
            }
            else if (sTekstiHyres.ToLower().IndexOf("rendit") == 0)                            //nese fillon fjala me 'rendit'...
            {                                                                                  // --------- TE KJO METODE KA 2 MUNDESI, renditje A-Z dhe Z-A (nese shkruaj 'renditr')
                int zbrastire = sTekstiHyres.Count(c => " ".Contains(Char.ToLower(c)));        //ktu nuk guxon te kete ndarje tjera perpos nje mes tekstit rendit {haps} 1,3,2
                if (zbrastire > 1)                                                             //Sa zbrastira ka! Ky eshte nje lloje validimi se sa zbrastira lejohen
                {
                    Console.WriteLine("Teksti juaj ka " + zbrastire + " zbrastira. Ju lutemi shkruani me vetem 1(nje) zbrastire\n");
                }
                else
                {
                    Console.WriteLine("Renditja eshte: " + objMetodShtese.RENDIT(sTekstiHyres) + "\n");  //thirre metoden
                }
                goto fundi;
            }
            else if (sTekstiHyres.ToLower().IndexOf("fiek") == 0)
            {
                string linku = objMetodShtese.FIEK(sTekstiHyres);       //metoda na kthen tipin string, ne e barazojme ate me str. linkun
                System.Diagnostics.Process.Start(linku);                //me kete komande ne fillojme nje proces, meqenese parametri eshte link hapet ne browser default te pc-s

                goto fundi;
            }

            socketKlienti.Send(Encoding.ASCII.GetBytes(sTekstiHyres));  //Dergimi i Kerkeses permes socketKlientit


            ////--------------------------------------------------------------------------------------------------------------////
            //|                                                                                                                |//
            //|                               Ktu fillon pranimi i pergjigjes nga serveri                                      |//
            //|                                                                                                                |//
            ////--------------------------------------------------------------------------------------------------------------////
            byte[] data = new byte[128];                                    //bajt maximal 128
            try
            {
                int    recivedDataLength = socketKlienti.Receive(data);                          //gjatesia e mesazhit
                string edhenangaserveri  = Encoding.ASCII.GetString(data, 0, recivedDataLength); //ruajtja e rezultatit te kthyer nga serveri ne stringun 'edhenangaserveri'
                Console.ForegroundColor = ConsoleColor.Yellow;                                   //pergjigjet do te na vine me ngjyre te verdhe
                Console.WriteLine("Përgjigjja: " + edhenangaserveri);                            //shtypet pergjigja e serverit
            }
            catch (SocketException ErrorExep)
            {
                Console.ForegroundColor = ConsoleColor.Yellow;
                Console.Write("Gjatë komunikimit me Server ka ndodhë ky gabim: \n");
                Console.ForegroundColor = ConsoleColor.Red;
                Console.WriteLine(ErrorExep);
                Console.ResetColor();
            }
            socketKlienti.Shutdown(SocketShutdown.Both);         //Nderprerja e dergimi,pranimit nepermes socketKlientit
            socketKlienti.Close();                               //Mbyllja e 'scoketKlienti' lidhjes

            fundi : Console.ForegroundColor = ConsoleColor.Blue; //ndryshim ngjyre te tekstit
            Console.Write("A keni perfunduar?[Po/Ndonjë] ");     //Mundesi per ta nderprer punen e kilientit
            Console.ResetColor();                                //kthimi i ngjyres default te consoles

            PergjigjePerMbyllje = Console.ReadLine();            //lexo fjalen qe shkruan klienti
            if (PergjigjePerMbyllje.ToLower() != "po")
            {
                goto perseri;//Mundson qe te kthehemi n e fillim te kodit, nese klienti nuk ka shtypur "po"
            }
            else
            {
                return;
            }
        }