

{"id":862,"date":"2021-02-17T11:55:55","date_gmt":"2021-02-17T03:55:55","guid":{"rendered":"https:\/\/www.52dixiaowo.com\/java\/?p=862"},"modified":"2021-02-17T14:07:58","modified_gmt":"2021-02-17T06:07:58","slug":"c-s-%e6%96%87%e4%bb%b6%e4%b8%8a%e4%bc%a0","status":"publish","type":"post","link":"https:\/\/www.52dixiaowo.com\/java\/post-862.html","title":{"rendered":"TCP \u5b9e\u73b0 C\/S \u6587\u4ef6\u4e0a\u4f20"},"content":{"rendered":"\n<p>\u4f7f\u7528 Socket \uff0c\u548c ServerSocket \u8fdb\u884c\u6587\u4ef6\u7684\u4e0a\u4f20<\/p>\n\n\n\n<h5>1.\u5ba2\u6237\u7aef\u4ee3\u7801 &#8211;&gt; TCPClient<\/h5>\n\n\n\n<p>\u4f7f\u7528\u672c\u5730\u6d41\u8bfb\u53d6\u6587\u4ef6\uff0c\u5e76\u4f7f\u7528\u7f51\u7edc\u6d41\u53d1\u9001\u7ed9\u670d\u52a1\u5668<\/p>\n\n\n\n<p>\u7f51\u7edc\u6d41\u53d1\u9001\u6587\u4ef6\u65f6\uff0c\u9700\u8981\u624b\u52a8\u5199\u4e0a\u6587\u4ef6\u7ec8\u6b62\u6807\u8bb0<\/p>\n\n\n\n<p>\u7136\u540e\u8bfb\u53d6\u670d\u52a1\u5668\u54cd\u5e94\u56de\u6765\u7684\u6d88\u606f\uff0c\u5224\u65ad\u662f\u5426\u54cd\u5e94\u6210\u529f\u6216\u5931\u8d25<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>import java.io.FileInputStream;\nimport java.io.IOException;\nimport java.io.InputStream;\nimport java.io.OutputStream;\nimport java.net.Socket;\npublic class TCPClient {\n    public static void main(String&#91;] args) throws IOException {\n        \/\/1.\u521b\u5efa\u4e00\u4e2a\u672c\u5730\u5b57\u8282\u8f93\u5165\u6d41FileInputStream\u5bf9\u8c61,\u6784\u9020\u65b9\u6cd5\u4e2d\u7ed1\u5b9a\u8981\u8bfb\u53d6\u7684\u6570\u636e\u6e90\n        FileInputStream fis = new FileInputStream(\"c:\\\\1.jpg\");\n        \/\/2.\u521b\u5efa\u4e00\u4e2a\u5ba2\u6237\u7aefSocket\u5bf9\u8c61,\u6784\u9020\u65b9\u6cd5\u4e2d\u7ed1\u5b9a\u670d\u52a1\u5668\u7684IP\u5730\u5740\u548c\u7aef\u53e3\u53f7\n        Socket socket = new Socket(\"127.0.0.1\",8888);\n        \/\/3.\u4f7f\u7528Socket\u4e2d\u7684\u65b9\u6cd5getOutputStream,\u83b7\u53d6\u7f51\u7edc\u5b57\u8282\u8f93\u51fa\u6d41OutputStream\u5bf9\u8c61\n        OutputStream os = socket.getOutputStream();\n        \/\/4.\u4f7f\u7528\u672c\u5730\u5b57\u8282\u8f93\u5165\u6d41FileInputStream\u5bf9\u8c61\u4e2d\u7684\u65b9\u6cd5read,\u8bfb\u53d6\u672c\u5730\u6587\u4ef6\n        int len = 0;\n        byte&#91;] bytes = new byte&#91;1024];\n        while((len = fis.read(bytes))!=-1){\n            \/\/5.\u4f7f\u7528\u7f51\u7edc\u5b57\u8282\u8f93\u51fa\u6d41OutputStream\u5bf9\u8c61\u4e2d\u7684\u65b9\u6cd5write,\u628a\u8bfb\u53d6\u5230\u7684\u6587\u4ef6\u4e0a\u4f20\u5230\u670d\u52a1\u5668\n            os.write(bytes,0,len);\n        }\n        \/*\n            \u89e3\u51b3:\u4e0a\u4f20\u5b8c\u6587\u4ef6,\u7ed9\u670d\u52a1\u5668\u5199\u4e00\u4e2a\u7ed3\u675f\u6807\u8bb0\n            void shutdownOutput() \u7981\u7528\u6b64\u5957\u63a5\u5b57\u7684\u8f93\u51fa\u6d41\u3002\n            \u5bf9\u4e8e TCP \u5957\u63a5\u5b57\uff0c\u4efb\u4f55\u4ee5\u524d\u5199\u5165\u7684\u6570\u636e\u90fd\u5c06\u88ab\u53d1\u9001\uff0c\u5e76\u4e14\u540e\u8ddf TCP \u7684\u6b63\u5e38\u8fde\u63a5\u7ec8\u6b62\u5e8f\u5217\u3002\n         *\/\n        socket.shutdownOutput();\n        \/\/6.\u4f7f\u7528Socket\u4e2d\u7684\u65b9\u6cd5getInputStream,\u83b7\u53d6\u7f51\u7edc\u5b57\u8282\u8f93\u5165\u6d41InputStream\u5bf9\u8c61\n        InputStream is = socket.getInputStream();\n        \/\/7.\u4f7f\u7528\u7f51\u7edc\u5b57\u8282\u8f93\u5165\u6d41InputStream\u5bf9\u8c61\u4e2d\u7684\u65b9\u6cd5read\u8bfb\u53d6\u670d\u52a1\u56de\u5199\u7684\u6570\u636e\n        while((len = is.read(bytes))!=-1){\n            System.out.println(new String(bytes,0,len));\n        }\n        \/\/8.\u91ca\u653e\u8d44\u6e90(FileInputStream,Socket)\n        fis.close();\n        socket.close();\n    }\n}<\/code><\/pre>\n\n\n\n<h5>2.\u670d\u52a1\u5668\u4ee3\u7801 &#8211;&gt; TCPServer<\/h5>\n\n\n\n<p>\u4f7f\u7528\u670d\u52a1\u5668\u5faa\u73af\u8bfb\u53d6\u7f51\u7edc\u6d41\uff0c\u5e76\u5f00\u542f\u591a\u7ebf\u7a0b\uff0c\u5e76\u7ed9\u6587\u4ef6\u8d4b\u503c\u968f\u673a\u540d\u79f0<\/p>\n\n\n\n<p>\u4ee5\u4fbf\u9ad8\u6548\u63a5\u6536\u591a\u4e2a\u5ba2\u6237\u7aef\u540c\u65f6\u4e0a\u4f20\u6587\u4ef6\uff0c\u6bcf\u6b21\u63a5\u6536\u5b8c\u6bd5\uff0c\u8fd4\u56de\u6210\u529f\u6d88\u606f<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>import java.io.*;\nimport java.net.ServerSocket;\nimport java.net.Socket;\npublic class TCPServer {\n    public static void main(String&#91;] args) throws IOException {\n        \/\/1.\u521b\u5efa\u4e00\u4e2a\u670d\u52a1\u5668ServerSocket\u5bf9\u8c61,\u548c\u7cfb\u7edf\u8981\u6307\u5b9a\u7684\u7aef\u53e3\u53f7\n        ServerSocket server = new ServerSocket(8888);\n        \/\/2.\u4f7f\u7528ServerSocket\u5bf9\u8c61\u4e2d\u7684\u65b9\u6cd5accept,\u83b7\u53d6\u5230\u8bf7\u6c42\u7684\u5ba2\u6237\u7aefSocket\u5bf9\u8c61\n        \/*\n            \u8ba9\u670d\u52a1\u5668\u4e00\u76f4\u5904\u4e8e\u76d1\u542c\u72b6\u6001(\u6b7b\u5faa\u73afaccept\u65b9\u6cd5)\n            \u6709\u4e00\u4e2a\u5ba2\u6237\u7aef\u4e0a\u4f20\u6587\u4ef6,\u5c31\u4fdd\u5b58\u4e00\u4e2a\u6587\u4ef6\n         *\/\n        while(true){\n            Socket socket = server.accept();\n            \/*\n                \u4f7f\u7528\u591a\u7ebf\u7a0b\u6280\u672f,\u63d0\u9ad8\u7a0b\u5e8f\u7684\u6548\u7387\n                \u6709\u4e00\u4e2a\u5ba2\u6237\u7aef\u4e0a\u4f20\u6587\u4ef6,\u5c31\u5f00\u542f\u4e00\u4e2a\u7ebf\u7a0b,\u5b8c\u6210\u6587\u4ef6\u7684\u4e0a\u4f20\n             *\/\n            new Thread(new Runnable() {\n                \/\/\u5b8c\u6210\u6587\u4ef6\u7684\u4e0a\u4f20\n                @Override\n                public void run() {\n                   try {\n                       \/\/3.\u4f7f\u7528Socket\u5bf9\u8c61\u4e2d\u7684\u65b9\u6cd5getInputStream,\u83b7\u53d6\u5230\u7f51\u7edc\u5b57\u8282\u8f93\u5165\u6d41InputStream\u5bf9\u8c61\n                       InputStream is = socket.getInputStream();\n                       \/\/4.\u5224\u65add:\\\\upload\u6587\u4ef6\u5939\u662f\u5426\u5b58\u5728,\u4e0d\u5b58\u5728\u5219\u521b\u5efa\n                       File file =  new File(\"d:\\\\upload\");\n                       if(!file.exists()){\n                           file.mkdirs();\n                       }\n                    \/*\n                        \u81ea\u5b9a\u4e49\u4e00\u4e2a\u6587\u4ef6\u7684\u547d\u540d\u89c4\u5219:\u9632\u6b62\u540c\u540d\u7684\u6587\u4ef6\u88ab\u8986\u76d6\n                        \u89c4\u5219:\u57df\u540d+\u6beb\u79d2\u503c+\u968f\u673a\u6570\n                     *\/\n                       String fileName = \"itcast\"+System.currentTimeMillis()+new Random().nextInt(999999)+\".jpg\";\n\n                       \/\/5.\u521b\u5efa\u4e00\u4e2a\u672c\u5730\u5b57\u8282\u8f93\u51fa\u6d41FileOutputStream\u5bf9\u8c61,\u6784\u9020\u65b9\u6cd5\u4e2d\u7ed1\u5b9a\u8981\u8f93\u51fa\u7684\u76ee\u7684\u5730\n                       \/\/FileOutputStream fos = new FileOutputStream(file+\"\\\\1.jpg\");\n                       FileOutputStream fos = new FileOutputStream(file+\"\\\\\"+fileName);\n                       \/\/6.\u4f7f\u7528\u7f51\u7edc\u5b57\u8282\u8f93\u5165\u6d41InputStream\u5bf9\u8c61\u4e2d\u7684\u65b9\u6cd5read,\u8bfb\u53d6\u5ba2\u6237\u7aef\u4e0a\u4f20\u7684\u6587\u4ef6\n                       int len =0;\n                       byte&#91;] bytes = new byte&#91;1024];\n                       while((len = is.read(bytes))!=-1){\n                           \/\/7.\u4f7f\u7528\u672c\u5730\u5b57\u8282\u8f93\u51fa\u6d41FileOutputStream\u5bf9\u8c61\u4e2d\u7684\u65b9\u6cd5write,\u628a\u8bfb\u53d6\u5230\u7684\u6587\u4ef6\u4fdd\u5b58\u5230\u670d\u52a1\u5668\u7684\u786c\u76d8\u4e0a\n                           fos.write(bytes,0,len);\n                       }\n                       \/\/8.\u4f7f\u7528Socket\u5bf9\u8c61\u4e2d\u7684\u65b9\u6cd5getOutputStream,\u83b7\u53d6\u5230\u7f51\u7edc\u5b57\u8282\u8f93\u51fa\u6d41OutputStream\u5bf9\u8c61\n                       \/\/9.\u4f7f\u7528\u7f51\u7edc\u5b57\u8282\u8f93\u51fa\u6d41OutputStream\u5bf9\u8c61\u4e2d\u7684\u65b9\u6cd5write,\u7ed9\u5ba2\u6237\u7aef\u56de\u5199\"\u4e0a\u4f20\u6210\u529f\"\n                       socket.getOutputStream().write(\"\u4e0a\u4f20\u6210\u529f\".getBytes());\n                   }catch (IOException e){\n                       System.out.println(e);\n                   }finally{\n                       \/\/10.\u91ca\u653e\u8d44\u6e90(FileOutputStream,Socket,ServerSocket)\n                       fos.close();\n                       socket.close();\n                   }\n                }\n            }).start();\n        }\n        \/\/\u5faa\u73af\u63a5\u6536\u65f6\uff0c\u670d\u52a1\u5668\u5c31\u4e0d\u7528\u5173\u95ed\n        \/\/server.close();\n    }\n}<\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>\u4f7f\u7528 Socket \uff0c\u548c ServerSocket \u8fdb\u884c\u6587\u4ef6\u7684\u4e0a\u4f20 1.\u5ba2\u6237\u7aef\u4ee3\u7801 &#8211;&gt; T&hellip; <a href=\"https:\/\/www.52dixiaowo.com\/java\/post-862.html\" class=\"more-link\">\u7ee7\u7eed\u9605\u8bfb <span class=\"screen-reader-text\">TCP \u5b9e\u73b0 C\/S \u6587\u4ef6\u4e0a\u4f20<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[26],"tags":[],"_links":{"self":[{"href":"https:\/\/www.52dixiaowo.com\/java\/wp-json\/wp\/v2\/posts\/862"}],"collection":[{"href":"https:\/\/www.52dixiaowo.com\/java\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.52dixiaowo.com\/java\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.52dixiaowo.com\/java\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.52dixiaowo.com\/java\/wp-json\/wp\/v2\/comments?post=862"}],"version-history":[{"count":0,"href":"https:\/\/www.52dixiaowo.com\/java\/wp-json\/wp\/v2\/posts\/862\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.52dixiaowo.com\/java\/wp-json\/wp\/v2\/media?parent=862"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.52dixiaowo.com\/java\/wp-json\/wp\/v2\/categories?post=862"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.52dixiaowo.com\/java\/wp-json\/wp\/v2\/tags?post=862"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}