{"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 utilitar\u00ebve klient-server Windows, pjesa 01.","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>P\u00ebrsh\u00ebndetje.<\/p>\n<p>Sot dysh, do t\u00eb flasim p\u00ebr procesin e shkruarjes s\u00eb aplikacioneve klient-server q\u00eb kryejn\u00eb funksionet e utiliteteve standarde t\u00eb Windows, si Telnet, TFTP, etj., etj., n\u00eb Jav\u00ebn e past\u00ebr. \u00cbsht\u00eb e qart\u00eb se nuk do t\u00eb sjell asgj\u00eb t\u00eb re \u2014 t\u00eb gjitha k\u00ebto utilitete tashm\u00eb funksionojn\u00eb me sukses p\u00ebr nj\u00eb koh\u00eb t\u00eb gjat\u00eb, por, besoj se nuk t\u00eb gjith\u00eb e din\u00eb se \u00e7far\u00eb ndodh n\u00ebn kapak\u00ebt e tyre.<\/p>\n<p>Sikurse flitet p\u00ebr k\u00ebt\u00eb n\u00eb vazhdim. <br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\nN\u00eb k\u00ebt\u00eb artikull, p\u00ebr t\u00eb mos e \u00e7ekur, p\u00ebrve\u00e7 informacionit t\u00eb p\u00ebrgjithsh\u00ebm, do t\u00eb shkruaj vet\u00ebm p\u00ebr serverin Telnet, por aktualisht ka edhe materiale p\u00ebr utilitete t\u00eb tjera \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 \u00ebsht\u00eb i nevojsh\u00ebm dhe si e p\u00ebrdorim. Nuk do t\u00eb citoj fjal\u00eb p\u00ebr fjal\u00eb burimet (n\u00ebse \u00ebsht\u00eb e nevojshme \u2014 n\u00eb fund t\u00eb artikullit do t\u00eb bashk\u00ebngjitet nj\u00eb lidhje p\u00ebr materialet mbi 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 p\u00ebrdorimin e portit t\u00eb serverit do t\u00eb mbaj n\u00eb heshtje p\u00ebr momentin, p\u00ebr k\u00ebt\u00eb m\u00eb von\u00eb). K\u00ebshtu q\u00eb, p\u00ebr zbatimin e tij, na nevojitet t\u00eb pranojm\u00eb nj\u00eb varg n\u00eb klient, ta transferojm\u00eb at\u00eb n\u00eb server, t\u00eb p\u00ebrpiqemi ta d\u00ebrgojm\u00eb n\u00eb komand\u00ebn tuaj, t\u00eb marrim p\u00ebrgjigjen e komand\u00ebs, n\u00ebse ka, ta transferojm\u00eb p\u00ebrs\u00ebri n\u00eb klient dhe ta shfaqim n\u00eb ekran, ose, n\u00eb rast t\u00eb ndonj\u00eb gabimi, t'i b\u00ebjm\u00eb t\u00eb qart\u00eb p\u00ebrdoruesit se di\u00e7ka nuk shkon.<\/p>\n<p>P\u00ebr realizimin e t\u00eb p\u00ebrmendurve m\u00eb sip\u00ebr, nevojiten p\u00ebrkat\u00ebsisht 2 klasa funksionale dhe nj\u00eb klas\u00eb testuese, nga e cila do t\u00eb fillojm\u00eb serverin dhe p\u00ebrmes s\u00eb cil\u00ebs do t\u00eb punojm\u00eb me klientin.<br \/>\nP\u00ebrkat\u00ebsisht, struktura aktuale e aplikacionit 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>\nDo t\u00eb kalojm\u00eb n\u00ebp\u00ebr secil\u00ebn prej tyre:<\/p>\n<p><b>TelnetClient<\/b><\/p>\n<p>E gjitha \u00e7far\u00eb duhet t\u00eb jet\u00eb n\u00eb gjendje t\u00eb b\u00ebj\u00eb kjo klas\u00eb \u2014 t\u00eb d\u00ebrgoj\u00eb komandat e marra dhe t\u00eb tregoj\u00eb p\u00ebrgjigjet e marra. P\u00ebr m\u00eb tep\u00ebr, duhet t\u00eb jet\u00eb n\u00eb gjendje t\u00eb lidh\u00eb me nj\u00eb port t\u00eb rast\u00ebsish\u00ebm (si\u00e7 e thash\u00eb m\u00eb sip\u00ebr) t\u00eb pajisjes s\u00eb larg\u00ebt dhe t\u00eb shk\u00ebputet prej tij.<\/p>\n<p>P\u00ebr k\u00ebt\u00eb jan\u00eb realizuar funksionet e m\u00ebposhtme:<\/p>\n<p>Nj\u00eb funksion q\u00eb pranon si argument adres\u00ebn e socket-it, hap lidhjen dhe aktivizon rrjedhat e hyrjes dhe daljes (variablat e rrjedh\u00ebs jan\u00eb shpallur m\u00eb sip\u00ebr, kodet e plota \u2014 n\u00eb fund t\u00eb artikullit).<\/p>\n<pre><code class=\"java\"> publik void run(String ip, int port)\n    {\n        p\u00ebrpiqem {\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        kapur (P\u00ebrjashtim e) {\n            System.out.println(e.getMessage());\n        }\n    }\n<\/code><\/pre>\n<p>\nOverload i k\u00ebsaj funksioni, q\u00eb lidhet me portin e paracaktuar \u2014 p\u00ebr telnetin \u00ebsht\u00eb 23<\/p>\n<pre><code class=\"java\">\n    publik void run(String ip)\n    {\n        run(ip, 23);\n    }\n<\/code><\/pre>\n<p>\nFunksioni lexon karakteret nga tastiera dhe i d\u00ebrgon n\u00eb soketin e daljes \u2014 si\u00e7 \u00ebsht\u00eb tipike, n\u00eb modin e linj\u00ebs, dhe jo n\u00eb modin e karaktereve:<\/p>\n<pre><code class=\"java\">\n    private void read(Scanner keyboard, OutputStream sout)\n    {\n        p\u00ebrpiqem {\n            String input = new String();\n            nd\u00ebrsa (e v\u00ebrtet\u00eb) {\n                input = keyboard.nextLine();\n                p\u00ebr (char i : (input + \" n\").toCharArray())\n                    sout.write(i);\n            }\n        }\n        kapur (P\u00ebrjashtim e) {\n            System.out.println(e.getMessage());\n        }\n    }\n<\/code><\/pre>\n<p>\nFunksioni merr t\u00eb dh\u00ebna nga soketi dhe i shfaq ato n\u00eb ekran<\/p>\n<pre><code class=\"java\">\n    private void write(InputStream sin)\n    {\n        p\u00ebrpiqem {\n            int tmp;\n            nd\u00ebrsa (e v\u00ebrtet\u00eb){\n                tmp = sin.read();\n                System.out.print((char)tmp);\n            }\n        }\n        kapur (P\u00ebrjashtim e) {\n            System.out.println(e.getMessage());\n        }\n    }\n<\/code><\/pre>\n<p>\nFunksioni ndalon marrjen dhe d\u00ebrgimin e t\u00eb dh\u00ebnave<\/p>\n<pre><code class=\"java\">\n    publik void stop()\n    {\n        reader.stop();\n        writer.stop();\n    }\n}<\/code><\/pre>\n<p>\n<b>TelnetServer<\/b><\/p>\n<p>Ky klas duhet t\u00eb ket\u00eb funksionalitetin e pranimit t\u00eb komand\u00ebs nga soketi, d\u00ebrgimin e saj p\u00ebr egzekutim dhe d\u00ebrgimin e p\u00ebrgjigjes nga komanda p\u00ebrs\u00ebri n\u00eb soket. N\u00eb program q\u00ebllimisht nuk ka verifikim t\u00eb t\u00eb dh\u00ebnave hyr\u00ebse, sepse s\u00eb pari, dhe n\u00eb \"telnetin e kutis\u00eb\" ekziston mund\u00ebsia p\u00ebr t\u00eb formatuar diskun e serverit, dhe s\u00eb dyti, \u00e7\u00ebshtja e siguris\u00eb n\u00eb k\u00ebt\u00eb artikull \u00ebsht\u00eb l\u00ebn\u00eb jasht\u00eb dhe p\u00ebr k\u00ebt\u00eb arsye nuk ka asnj\u00eb fjal\u00eb p\u00ebr enkriptimin ose SSL.<\/p>\n<p>K\u00ebtu ka vet\u00ebm 2 funksione (nj\u00ebra prej t\u00eb cilave \u00ebsht\u00eb overload), 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 gjith\u00e7ka ashtu si\u00e7 \u00ebsht\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 soket serveri dhe e lidhim 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(\"E 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 env = System.getenv();\n            String wayToTemp = env.get(\"TEMP\") + \"tmp.txt\";\n            for (int i : (\"Connectednnr\".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 = \"Di\u00e7ka 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 nga t\u00eb dh\u00ebnat derisa t\u00eb takohet simboli p\u00ebrfundimtar i komand\u00ebs, transferon komand\u00ebn n\u00eb nj\u00eb proces t\u00eb ri, dhe dalja nga procesi \u00ebsht\u00eb ridrejtuar n\u00eb soket. E thjesht\u00eb si nj\u00eb automat Kalashnikovi.<\/p>\n<p>Prandaj, p\u00ebr k\u00ebt\u00eb funksion ka nj\u00eb mbushje me portin e paracaktuar:<\/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 e thjesht\u00eb, ai nd\u00ebrpret ciklin e p\u00ebrhersh\u00ebm, duke shkelur kushtin e tij.<\/p>\n<pre><code class=\"java\">    public void stop()\n    {\n        System.out.println(\"Server was stopped\");\n        this.isRunning = false;\n    }<\/code><\/pre>\n<p>\nNuk i sjell k\u00ebtu klasat testuese, ato jan\u00eb m\u00eb posht\u00eb \u2014 gjith\u00e7ka q\u00eb ato b\u00ebjn\u00eb \u00ebsht\u00eb t\u00eb kontrollojn\u00eb funksionalitetin e metodave publike. T\u00eb gjitha jan\u00eb n\u00eb Git.<\/p>\n<p>P\u00ebrmbledhur, p\u00ebr disa mbr\u00ebmje mund t\u00eb kuptoni parimet e veprimit t\u00eb utiliteteve kryesore t\u00eb konsol\u00ebs. Tani, kur ne lidhemi me nj\u00eb kompjuter t\u00eb larg\u00ebt, ne kuptojm\u00eb se \u00e7far\u00eb po ndodh \u2014 magia ka ikur)<\/p>\n<p>Pra, lidhjet:<br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/Toxa-p07a1330\/Temviewer\">T\u00eb gjitha burimet kan\u00eb qen\u00eb, 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\/\">P\u00ebr Telnetin<\/a><\/noindex><br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/www.lifewire.com\/what-does-telnet-do-2483642\">M\u00eb shum\u00eb p\u00ebr Telnetin<\/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.2.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.\" \/>\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.2.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.\" \/>\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\udd47Shkrimi i softuerit me funksionalitetin e utiliteteve klient-server t\u00eb Windows, pjesa 01 | ProHoster","description":"P\u00ebrsh\u00ebndetje. Sot do doja t\u00eb shqyrtoja procesin e shkrimit t\u00eb aplikacioneve klient-server, t\u00eb cilat kryejn\u00eb funksionet e utiliteteve standarde t\u00eb Windows, si\u00e7 jan\u00eb Telnet, TFTP, etj., etj. n\u00eb Jav\u00ebn e past\u00ebr.","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.","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}]}}