{"id":36378,"date":"2019-10-31T22:11:20","date_gmt":"2019-10-31T19:11:20","guid":{"rendered":"https:\/\/prohoster.info\/blog\/napisanie-programmnogo-obespecheniya-s-funktsionalom-klient-servernyh-utilit-windows-part-01\/"},"modified":"2019-10-31T22:11:20","modified_gmt":"2019-10-31T19:11:20","slug":"napisanie-programmnogo-obespecheniya-s-funktsionalom-klient-servernyh-utilit-windows-part-01","status":"publish","type":"post","link":"https:\/\/prohoster.info\/sq\/blog\/administrirovanie\/napisanie-programmnogo-obespecheniya-s-funktsionalom-klient-servernyh-utilit-windows-part-01","title":{"rendered":"Shkrimi i softuerit me funksionalitetin e mjeteve klient-server t\u00eb Windows, pjesa 01","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>P\u00ebrsh\u00ebndetje.<\/p>\n<p>Sot, sot, do t'ash\u00ebrojm\u00eb procesin e krijimit t\u00eb aplikacioneve klient-server q\u00eb kryejn\u00eb funksionet e utilitar\u00ebve standard t\u00eb Windows, si Telnet, TFTP, e t\u00eb tjera, n\u00eb Java t\u00eb past\u00ebr. E kuptoj q\u00eb nuk po sjell asgj\u00eb t\u00eb re \u2014 t\u00eb gjith\u00eb k\u00ebta utilitar\u00eb kan\u00eb funksionuar me sukses p\u00ebr nj\u00eb koh\u00eb t\u00eb gjat\u00eb, por mendoj se nuk t\u00eb gjith\u00eb e din\u00eb \u00e7far\u00eb ndodh n\u00ebn kapak\u00ebt e tyre.<\/p>\n<p>Pik\u00ebrisht rreth k\u00ebsaj do t\u00eb flasim m\u00eb posht\u00eb. <br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\nN\u00eb k\u00ebt\u00eb artikull, q\u00eb t\u00eb mos e zgjat, p\u00ebrve\u00e7 informacionit t\u00eb p\u00ebrgjithsh\u00ebm do t\u00eb shkruaj vet\u00ebm p\u00ebr serverin Telnet, por deri tani ka materiale edhe p\u00ebr utilitar\u00eb t\u00eb tjer\u00eb \u2014 ato do t\u00eb jen\u00eb n\u00eb pjes\u00ebt e ardhshme t\u00eb ciklit.<\/p>\n<p>S\u00eb pari, duhet t\u00eb kuptojm\u00eb se \u00e7far\u00eb \u00ebsht\u00eb Telnet, p\u00ebr \u00e7far\u00eb sh\u00ebrben dhe si p\u00ebrdoret. Nuk do t\u00eb citoj burimet fjal\u00eb p\u00ebr fjal\u00eb (n\u00ebse \u00ebsht\u00eb e nevojshme \u2014 n\u00eb fund t\u00eb artikullit do ngjisim nj\u00eb lidhje me materialet p\u00ebr tem\u00ebn), do t\u00eb them vet\u00ebm se Telnet siguron akses t\u00eb larg\u00ebt n\u00eb komand\u00ebn e pajisjes. N\u00eb thelb, k\u00ebtu p\u00ebrfundon funksionaliteti i tij (p\u00ebr adresimin e portit t\u00eb serverit nuk po flasim tani, p\u00ebr k\u00ebt\u00eb do t\u00eb theksoj m\u00eb von\u00eb). K\u00ebshtu, p\u00ebr ta realizuar at\u00eb, na nevojitet t\u00eb pranojm\u00eb nj\u00eb varg n\u00eb klient, ta transferojm\u00eb n\u00eb server, t\u00eb p\u00ebrpiqemi ta d\u00ebrgojm\u00eb n\u00eb komand\u00ebn e terminalit, t\u00eb lexojm\u00eb p\u00ebrgjigjen e komand\u00ebs, n\u00ebse ka, ta d\u00ebrgojm\u00eb at\u00eb p\u00ebrs\u00ebri n\u00eb klient dhe t\u00eb shfaqim n\u00eb ekran, ose n\u00eb rast t\u00eb nj\u00eb gabimi, t'i b\u00ebjm\u00eb t\u00eb ditur p\u00ebrdoruesit se di\u00e7ka nuk \u00ebsht\u00eb n\u00eb rregull.<\/p>\n<p>P\u00ebr realizimin e asaj q\u00eb p\u00ebrmenda m\u00eb sip\u00ebr, na duhen p\u00ebrkat\u00ebsisht 2 klasa funksionale dhe nj\u00eb klas\u00eb testuese, nga e cila do t\u00eb nisnim serverin dhe p\u00ebrmes s\u00eb cil\u00ebs do t\u00eb funksiononte klienti.<br \/>\nStruktura e aplikacionit aktualisht p\u00ebrfshin:<\/p>\n<ul>\n<li>TelnetClient<\/li>\n<li>TelnetClientTester<\/li>\n<li>TelnetServer<\/li>\n<li>TelnetServerTester<\/li>\n<\/ul>\n<p>\nLe t\u00eb shohim secil\u00ebn prej tyre:<\/p>\n<p><b>TelnetClient<\/b><\/p>\n<p>Gjith\u00e7ka q\u00eb duhet t\u00eb b\u00ebj\u00eb kjo klas\u00eb \u00ebsht\u00eb t\u00eb d\u00ebrgoj\u00eb komandat q\u00eb merr dhe t\u00eb tregoj\u00eb p\u00ebrgjigjet q\u00eb merr. P\u00ebr m\u00eb tep\u00ebr, duhet t\u00eb jet\u00eb n\u00eb gjendje t\u00eb lidhet me nj\u00eb port t\u00eb caktuar (p\u00ebr t\u00eb cilin flas m\u00eb lart) t\u00eb pajisjes s\u00eb larg\u00ebt dhe t\u00eb shk\u00ebputet nga ai.<\/p>\n<p>P\u00ebr k\u00ebt\u00eb jan\u00eb realizuar funksionet e m\u00ebposhtme:<\/p>\n<p>Nj\u00eb funksion q\u00eb merr si argument adres\u00ebn e socket-it, hap lidhjen dhe nis rrjedhat e hyrjes dhe daljes (variablat e rrjedhave jan\u00eb shpallur m\u00eb sip\u00ebr, burimet e plota do t\u00eb jen\u00eb n\u00eb fund t\u00eb artikullit).<\/p>\n<pre><code class=\"java\"> public void run(String ip, int port)\n    {\n        try {\n            Socket socket = new Socket(ip, port);\n            InputStream sin = socket.getInputStream();\n            OutputStream sout = socket.getOutputStream();\n            Scanner keyboard = new Scanner(System.in);\n            reader = new Thread(()-&gt;read(keyboard, sout));\n            writer = new Thread(()-&gt;write(sin));\n            reader.start();\n            writer.start();\n        }\n        catch (Exception e) {\n            System.out.println(e.getMessage());\n        }\n    }\n<\/code><\/pre>\n<p>\nNuk ndryshojm\u00eb k\u00ebt\u00eb funksion, i cili lidhet me portin e parazgjedhur \u2014 p\u00ebr telnetin, ky \u00ebsht\u00eb 23.<\/p>\n<pre><code class=\"java\">\n    public void run(String ip)\n    {\n        run(ip, 23);\n    }\n<\/code><\/pre>\n<p>\nFunksioni lexon karakteret nga tastiera dhe i d\u00ebrgon ato n\u00eb socket-in e daljes \u2014 \u00e7far\u00eb \u00ebsht\u00eb karakteristik, n\u00eb modin e vargut, e jo at\u00eb t\u00eb karaktereve:<\/p>\n<pre><code class=\"java\">\n    private void read(Scanner keyboard, OutputStream sout)\n    {\n        try {\n            String input = new String();\n            while (true) {\n                input = keyboard.nextLine();\n                for (char i : (input + \" n\").toCharArray())\n                    sout.write(i);\n            }\n        }\n        catch (Exception e) {\n            System.out.println(e.getMessage());\n        }\n    }\n<\/code><\/pre>\n<p>\nFunksioni merr t\u00eb dh\u00ebna nga socket-i dhe i shfaq ato n\u00eb ekran.<\/p>\n<pre><code class=\"java\">\n    private void write(InputStream sin)\n    {\n        try {\n            int tmp;\n            while (true){\n                tmp = sin.read();\n                System.out.print((char)tmp);\n            }\n        }\n        catch (Exception e) {\n            System.out.println(e.getMessage());\n        }\n    }\n<\/code><\/pre>\n<p>\nFunksioni ndalon pranimin dhe d\u00ebrgimin e t\u00eb dh\u00ebnave.<\/p>\n<pre><code class=\"java\">\n    public void stop()\n    {\n        reader.stop();\n        writer.stop();\n    }\n}<\/code><\/pre>\n<p>\n<b>TelnetServer<\/b><\/p>\n<p>Kjo klas\u00eb duhet t\u00eb ket\u00eb funksionalitetin p\u00ebr t\u00eb pranuar komanda nga socket-i, p\u00ebr t'i d\u00ebrguar ato p\u00ebr ekzekutim dhe p\u00ebr t\u00eb d\u00ebrguar p\u00ebrgjigjen e komand\u00ebs mbrapsht n\u00eb socket. N\u00eb program nuk ka kontroll p\u00ebr t\u00eb dh\u00ebnat e hyrshme, sepse s\u00eb pari, edhe n\u00eb \u201ctelnet-in e kutis\u00eb\u201d ka mund\u00ebsin\u00eb t\u00eb formatosh diskun e serverit, dhe s\u00eb dyti, \u00e7\u00ebshtja e siguris\u00eb n\u00eb k\u00ebt\u00eb artikull \u00ebsht\u00eb e anashkaluar dhe p\u00ebr k\u00ebt\u00eb arsye k\u00ebtu nuk ka asnj\u00eb fjal\u00eb p\u00ebr enkriptimin ose SSL.<\/p>\n<p>K\u00ebtu ka vet\u00ebm 2 funksione (nj\u00ebra prej tyre \u00ebsht\u00eb e overload-uar), dhe n\u00eb p\u00ebrgjith\u00ebsi kjo nuk \u00ebsht\u00eb nj\u00eb praktik\u00eb shum\u00eb e mir\u00eb, megjithat\u00eb, n\u00eb kuad\u00ebr t\u00eb k\u00ebsaj detyre, m\u00eb duket e arsyeshme ta l\u00eb t\u00eb gjitha si\u00e7 jan\u00eb.<\/p>\n<pre><code class=\"java\"> boolean isRunning = true;\n    public void run(int port)    {\n\n        (new Thread(()-&gt;{ try {\n            ServerSocket ss = new ServerSocket(port); \/\/ krijojm\u00eb soketin e serverit dhe e lidhi at\u00eb me portin e m\u00ebsip\u00ebrm\n            System.out.println(\"Port \" + port + \" \u00ebsht\u00eb duke pritur p\u00ebr lidhje\");\n\n            Socket socket = ss.accept();\n            System.out.println(\"I lidhur\");\n            System.out.println();\n\n            \/\/ Marrim rrjedhat hyr\u00ebse dhe dal\u00ebse t\u00eb soketit, tani mund t\u00eb marrim dhe d\u00ebrgojm\u00eb t\u00eb dh\u00ebna klientit.\n            InputStream sin = socket.getInputStream();\n            OutputStream sout = socket.getOutputStream();\n\n            Map&lt;String, String&gt; env = System.getenv();\n            String wayToTemp = env.get(\"TEMP\") + \"tmp.txt\";\n            for (int i : (\"I lidhurnnr\".toCharArray()))\n                sout.write(i);\n            sout.flush();\n\n            String buffer = new String();\n            while (isRunning) {\n\n                int intReader = 0;\n                while ((char) intReader != 'n') {\n                    intReader = sin.read();\n                    buffer += (char) intReader;\n                }\n\n\n                final String inputToSubThread = \"cmd \/c \" + buffer.substring(0, buffer.length()-2) + \" 2&gt;&amp;1\";\n\n\n                new Thread(()-&gt; {\n                    try {\n\n                        Process p = Runtime.getRuntime().exec(inputToSubThread);\n                        InputStream out = p.getInputStream();\n                        Scanner fromProcess = new Scanner(out);\n                        try {\n\n                            while (fromProcess.hasNextLine()) {\n                                String temp = fromProcess.nextLine();\n                                System.out.println(temp);\n                                for (char i : temp.toCharArray())\n                                    sout.write(i);\n                                sout.write('n');\n                                sout.write('r');\n                            }\n                        }\n                        catch (Exception e) {\n                            String output = \"Dicka shkoi keq... Kodi i gabimit: \" + e.getStackTrace();\n                            System.out.println(output);\n                            for (char i : output.toCharArray())\n                                sout.write(i);\n                            sout.write('n');\n                            sout.write('r');\n                        }\n\n                        p.getErrorStream().close();\n                        p.getOutputStream().close();\n                        p.getInputStream().close();\n                        sout.flush();\n\n                    }\n                    catch (Exception e) {\n                        System.out.println(\"Gabim: \" + e.getMessage());\n                    }\n                }).start();\n                System.out.println(buffer);\n                buffer = \"\";\n\n            }\n        }\n        catch(Exception x) {\n            System.out.println(x.getMessage());\n        }})).start();\n\n    }\n<\/code><\/pre>\n<p>\nProgrami hap nj\u00eb port serveri, lexon t\u00eb dh\u00ebnat nga ai derisa t\u00eb takoj\u00eb simbolin e p\u00ebrfundimit t\u00eb komand\u00ebs, e d\u00ebrgon komand\u00ebn n\u00eb nj\u00eb proces t\u00eb ri, dhe rezultati nga ai proces drejtohet n\u00eb soket. E thjesht\u00eb si nj\u00eb automat Kalashnikov.<\/p>\n<p>N\u00eb p\u00ebrputhje me k\u00ebt\u00eb, ekziston nj\u00eb mbingarkes\u00eb p\u00ebr k\u00ebt\u00eb funksion me portin sipas parazgjedhjes:<\/p>\n<pre><code class=\"java\"> public void run()\n    {\n        run(23);\n    }<\/code><\/pre>\n<p>\nPo ashtu, funksioni q\u00eb ndalon serverin \u2014 gjithashtu \u00ebsht\u00eb i thjesht\u00eb, ai nd\u00ebrpret ciklin e p\u00ebrjetsh\u00ebm, duke shkelur kushtin e tij.<\/p>\n<pre><code class=\"java\">    public void stop()\n    {\n        System.out.println(\"Serveri u ndal\");\n        this.isRunning = false;\n    }<\/code><\/pre>\n<p>\nNuk do t\u00eb jap k\u00ebtu klasat testuese, ato jan\u00eb m\u00eb posht\u00eb \u2014 gjith\u00e7ka q\u00eb ato b\u00ebjn\u00eb \u00ebsht\u00eb t\u00eb verifikojn\u00eb funksionalitetin e metodave publike. T\u00eb gjitha jan\u00eb n\u00eb git.<\/p>\n<p>Pra, p\u00ebr t\u00eb p\u00ebrmbledhur, p\u00ebr disa mbr\u00ebmje mund t\u00eb kuptoni parimet e funksionimit t\u00eb utilitar\u00ebve t\u00eb zakonsh\u00ebm t\u00eb konsol\u00ebs. Tani, kur ne lidhim me kompjuterin e larg\u00ebt, ne kuptojm\u00eb se \u00e7far\u00eb po ndodh \u2014 magia ka, pra, humbur)<\/p>\n<p>Pra, lidhjet:<br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/Toxa-p07a1330\/Temviewer\">T\u00eb gjitha burimet ishin, jan\u00eb dhe do t\u00eb jen\u00eb k\u00ebtu<\/a><\/noindex><br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/www.extrahop.com\/resources\/protocols\/telnet\/\">N\u00eb lidhje me Telnet-in<\/a><\/noindex><br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/www.lifewire.com\/what-does-telnet-do-2483642\">M\u00eb shum\u00eb p\u00ebr Telnet-in<\/a><\/noindex><br \/>\n<br \/>Burimi: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/460569\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041f\u0440\u0438\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e. \u0421\u0435\u0433\u043e\u0434\u043d\u044f \u0445\u043e\u0442\u0435\u043b\u043e\u0441\u044c \u0431\u044b \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u043a\u043b\u0438\u0435\u043d\u0442-\u0441\u0435\u0440\u0432\u0435\u0440\u043d\u044b\u0445 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439, \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u044e\u0449\u0438\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0445 \u0443\u0442\u0438\u043b\u0438\u0442 Windows, \u043a\u0430\u043a \u0442\u043e Telnet, TFTP, et cetera, et cetera \u043d\u0430 \u0447\u0438\u0441\u0442\u043e\u0439 Jav\u0430. \u041f\u043e\u043d\u044f\u0442\u043d\u043e, \u0447\u0442\u043e \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u043e\u0432\u043e\u0433\u043e \u044f \u043d\u0435 \u043f\u0440\u0438\u0432\u043d\u0435\u0441\u0443 \u2014 \u0432\u0441\u0435 \u044d\u0442\u0438 \u0443\u0442\u0438\u043b\u0438\u0442\u044b \u0443\u0436\u0435 \u0443\u0441\u043f\u0435\u0448\u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 \u043d\u0435 \u043e\u0434\u0438\u043d \u0433\u043e\u0434, \u043d\u043e, \u043f\u043e\u043b\u0430\u0433\u0430\u044e, \u0447\u0442\u043e \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u043f\u043e\u0434 \u043a\u0430\u043f\u043e\u0442\u043e\u043c \u0443 \u043d\u0438\u0445 \u0437\u043d\u0430\u044e\u0442 \u043d\u0435 \u0432\u0441\u0435. \u0418\u043c\u0435\u043d\u043d\u043e \u043e\u0431 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-36378","post","type-post","status-publish","format-standard","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.0.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u041f\u0440\u0438\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e. \u0421\u0435\u0433\u043e\u0434\u043d\u044f \u0445\u043e\u0442\u0435\u043b\u043e\u0441\u044c \u0431\u044b \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u043a\u043b\u0438\u0435\u043d\u0442-\u0441\u0435\u0440\u0432\u0435\u0440\u043d\u044b\u0445 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439, \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u044e\u0449\u0438\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0445 \u0443\u0442\u0438\u043b\u0438\u0442 Windows, \u043a\u0430\u043a \u0442\u043e Telnet, TFTP, et cetera, et cetera \u043d\u0430 \u0447\u0438\u0441\u0442\u043e\u0439 Jav\u0430. \u041f\u043e\u043d\u044f\u0442\u043d\u043e, \u0447\u0442\u043e \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u043e\u0432\u043e\u0433\u043e \u044f \u043d\u0435 \u043f\u0440\u0438\u0432\u043d\u0435\u0441\u0443 \u2014 \u0432\u0441\u0435 \u044d\u0442\u0438 \u0443\u0442\u0438\u043b\u0438\u0442\u044b \u0443\u0436\u0435 \u0443\u0441\u043f\u0435\u0448\u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 \u043d\u0435 \u043e\u0434\u0438\u043d \u0433\u043e\u0434, \u043d\u043e, \u043f\u043e\u043b\u0430\u0433\u0430\u044e, \u0447\u0442\u043e \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u043f\u043e\u0434 \u043a\u0430\u043f\u043e\u0442\u043e\u043c \u0443 \u043d\u0438\u0445 \u0437\u043d\u0430\u044e\u0442 \u043d\u0435 \u0432\u0441\u0435. \u0418\u043c\u0435\u043d\u043d\u043e \u043e\u0431\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/sq\/blog\/administrirovanie\/napisanie-programmnogo-obespecheniya-s-funktsionalom-klient-servernyh-utilit-windows-part-01\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.0.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"sq_AL\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u041d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e\u0433\u043e \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0435\u043d\u0438\u044f \u0441 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u043e\u043c \u043a\u043b\u0438\u0435\u043d\u0442-\u0441\u0435\u0440\u0432\u0435\u0440\u043d\u044b\u0445 \u0443\u0442\u0438\u043b\u0438\u0442 Windows, part 01 | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041f\u0440\u0438\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e. \u0421\u0435\u0433\u043e\u0434\u043d\u044f \u0445\u043e\u0442\u0435\u043b\u043e\u0441\u044c \u0431\u044b \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u043a\u043b\u0438\u0435\u043d\u0442-\u0441\u0435\u0440\u0432\u0435\u0440\u043d\u044b\u0445 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439, \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u044e\u0449\u0438\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0445 \u0443\u0442\u0438\u043b\u0438\u0442 Windows, \u043a\u0430\u043a \u0442\u043e Telnet, TFTP, et cetera, et cetera \u043d\u0430 \u0447\u0438\u0441\u0442\u043e\u0439 Jav\u0430. \u041f\u043e\u043d\u044f\u0442\u043d\u043e, \u0447\u0442\u043e \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u043e\u0432\u043e\u0433\u043e \u044f \u043d\u0435 \u043f\u0440\u0438\u0432\u043d\u0435\u0441\u0443 \u2014 \u0432\u0441\u0435 \u044d\u0442\u0438 \u0443\u0442\u0438\u043b\u0438\u0442\u044b \u0443\u0436\u0435 \u0443\u0441\u043f\u0435\u0448\u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 \u043d\u0435 \u043e\u0434\u0438\u043d \u0433\u043e\u0434, \u043d\u043e, \u043f\u043e\u043b\u0430\u0433\u0430\u044e, \u0447\u0442\u043e \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u043f\u043e\u0434 \u043a\u0430\u043f\u043e\u0442\u043e\u043c \u0443 \u043d\u0438\u0445 \u0437\u043d\u0430\u044e\u0442 \u043d\u0435 \u0432\u0441\u0435. \u0418\u043c\u0435\u043d\u043d\u043e \u043e\u0431\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/sq\/blog\/administrirovanie\/napisanie-programmnogo-obespecheniya-s-funktsionalom-klient-servernyh-utilit-windows-part-01\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2019-10-31T19:11:20+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T19:11:20+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Shkruarja e softuerit me funksionalitetin e utilitar\u00ebve klient-server t\u00eb Windows, pjesa 01 | ProHoster","description":"P\u00ebrsh\u00ebndetje. Sot do t\u00eb doja t\u00eb shqyrtoj procesin e shkruarjes s\u00eb aplikacioneve klient-server q\u00eb kryejn\u00eb funksionet e utilitar\u00ebve standard\u00eb t\u00eb Windows, si Telnet, TFTP, etj., etj. n\u00eb Java t\u00eb past\u00ebr. \u00cbsht\u00eb e qart\u00eb se nuk do t\u00eb sjell asgj\u00eb t\u00eb re - t\u00eb gjitha k\u00ebto utilitare funksionojn\u00eb me sukses p\u00ebr nj\u00eb koh\u00eb t\u00eb gjat\u00eb, por besoj se jo t\u00eb gjith\u00eb e din\u00eb se \u00e7far\u00eb ndodh n\u00ebn kapak\u00ebt e tyre. Pik\u00ebrisht mbi k\u00ebt\u00eb","canonical_url":"https:\/\/prohoster.info\/sq\/blog\/administrirovanie\/napisanie-programmnogo-obespecheniya-s-funktsionalom-klient-servernyh-utilit-windows-part-01","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"sq_AL","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u041d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e\u0433\u043e \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0435\u043d\u0438\u044f \u0441 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u043e\u043c \u043a\u043b\u0438\u0435\u043d\u0442-\u0441\u0435\u0440\u0432\u0435\u0440\u043d\u044b\u0445 \u0443\u0442\u0438\u043b\u0438\u0442 Windows, part 01 | ProHoster","og:description":"\u041f\u0440\u0438\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e. \u0421\u0435\u0433\u043e\u0434\u043d\u044f \u0445\u043e\u0442\u0435\u043b\u043e\u0441\u044c \u0431\u044b \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u043a\u043b\u0438\u0435\u043d\u0442-\u0441\u0435\u0440\u0432\u0435\u0440\u043d\u044b\u0445 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439, \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u044e\u0449\u0438\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0445 \u0443\u0442\u0438\u043b\u0438\u0442 Windows, \u043a\u0430\u043a \u0442\u043e Telnet, TFTP, et cetera, et cetera \u043d\u0430 \u0447\u0438\u0441\u0442\u043e\u0439 Jav\u0430. \u041f\u043e\u043d\u044f\u0442\u043d\u043e, \u0447\u0442\u043e \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u043e\u0432\u043e\u0433\u043e \u044f \u043d\u0435 \u043f\u0440\u0438\u0432\u043d\u0435\u0441\u0443 \u2014 \u0432\u0441\u0435 \u044d\u0442\u0438 \u0443\u0442\u0438\u043b\u0438\u0442\u044b \u0443\u0436\u0435 \u0443\u0441\u043f\u0435\u0448\u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 \u043d\u0435 \u043e\u0434\u0438\u043d \u0433\u043e\u0434, \u043d\u043e, \u043f\u043e\u043b\u0430\u0433\u0430\u044e, \u0447\u0442\u043e \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u043f\u043e\u0434 \u043a\u0430\u043f\u043e\u0442\u043e\u043c \u0443 \u043d\u0438\u0445 \u0437\u043d\u0430\u044e\u0442 \u043d\u0435 \u0432\u0441\u0435. \u0418\u043c\u0435\u043d\u043d\u043e \u043e\u0431","og:url":"https:\/\/prohoster.info\/sq\/blog\/administrirovanie\/napisanie-programmnogo-obespecheniya-s-funktsionalom-klient-servernyh-utilit-windows-part-01","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2019-10-31T19:11:20+00:00","article:modified_time":"2019-10-31T19:11:20+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"36378","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":"2026-01-22 03:04:19","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-03-01 01:46:25","updated":"2026-01-22 03:04:19","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/posts\/36378","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/comments?post=36378"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/posts\/36378\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/media?parent=36378"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/categories?post=36378"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/tags?post=36378"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}