{"id":1582,"date":"2020-11-18T16:34:00","date_gmt":"2020-11-18T08:34:00","guid":{"rendered":"https:\/\/www.yusian.com\/blog\/?p=1582"},"modified":"2020-11-18T16:34:00","modified_gmt":"2020-11-18T08:34:00","slug":"socket%e9%80%9a%e8%ae%af%e7%9a%84%e7%ae%80%e5%8d%95%e5%ae%9e%e7%8e%b0%e4%b8%8e%e5%ba%94%e7%94%a8%e6%96%87%e4%bb%b6%e4%b8%8a%e4%bc%a0","status":"publish","type":"post","link":"https:\/\/www.yusian.com\/blog\/java\/2020\/11\/18\/1634001582.html","title":{"rendered":"Socket\u901a\u8baf\u7684\u7b80\u5355\u5b9e\u73b0\u4e0e\u5e94\u7528(\u6587\u4ef6\u4e0a\u4f20)"},"content":{"rendered":"<h3>Socket\u901a\u8baf\u7684\u57fa\u672c\u5b9e\u73b0<\/h3>\n<pre><code class=\"language-java line-numbers\">package com.yusian.socket;\n\nimport java.io.IOException;\nimport java.io.InputStream;\nimport java.io.OutputStream;\nimport java.net.ServerSocket;\nimport java.net.Socket;\n\npublic class SocketDemo {\n    public static void main(String[] args) {\n        \/\/ \u670d\u52a1\u7aef\u8fdb\u7a0b\n        new Thread(() -&gt; {\n            try {\n                \/\/ \u521b\u5efa\u4e00\u4e2aSocket\u670d\u52a1\n                ServerSocket ss = new ServerSocket(8080);\n                \/\/ \u83b7\u53d6Socket\u7684\u5b57\u8282\u8f93\u5165\u6d41\u5bf9\u8c61\uff0c\u6b64\u65f6\u7a0b\u5e8f\u4f1a\u963b\u585e\u5728\u8fd9\u4e2a\u4f4d\u7f6e\uff0c\u76f4\u5230\u6709\u6570\u636e\n                InputStream is = ss.accept().getInputStream();\n                int data = 0;\n                \/\/ \u5c06\u63a5\u6536\u5230\u7684\u6570\u636e\u8f93\u51fa\u5230\u63a7\u5236\u53f0\n                while ((data = is.read()) != -1) {\n                    System.out.print((char) data);\n                }\n            } catch (IOException e) {\n                e.printStackTrace();\n            }\n        }).start();\n\n        \/\/ \u5ba2\u6237\u7aef\u8fdb\u7a0b\n        new Thread(() -&gt; {\n            try {\n                \/\/ \u521b\u5efa\u4e00\u4e2aSocket\u5ba2\u6237\u7aef\uff0c\u8fde\u63a5\u5230\u6307\u5b9a\u670d\u52a1\u5668\n                Socket s = new Socket(\"localhost\", 8080);\n                \/\/ \u83b7\u53d6Socket\u7684\u5b57\u8282\u8f93\u51fa\u6d41\uff0c\u5c06\u6570\u636e\u4ece\u8fd9\u91cc\u53d1\u51fa\n                OutputStream os = s.getOutputStream();\n                os.write(\"Hello Socket...\".getBytes());\n                \/\/ \u6ce8\u610f\uff1a\u8981\u4e3b\u52a8\u7ed3\u675f\u6570\u636e\u53d1\u9001\uff0c\u5426\u5219\u5bf9\u65b9\u4f1a\u4e00\u76f4\u5904\u4e8e\u7b49\u5f85\u72b6\u6001\n                s.shutdownOutput();\n            } catch (IOException e) {\n                e.printStackTrace();\n            }\n        }).start();\n    }\n}\n<\/code><\/pre>\n<p><!--more--><\/p>\n<h3>\u591a\u7ebf\u7a0b\u6587\u4ef6\u4e0a\u4f20<\/h3>\n<p><strong>Client<\/strong><\/p>\n<pre><code class=\"language-java line-numbers\">package com.yusian.socket;\n\nimport java.io.FileInputStream;\nimport java.io.IOException;\nimport java.io.InputStream;\nimport java.io.OutputStream;\nimport java.net.Socket;\n\npublic class Client {\n    public static void main(String[] args) {\n        try {\n            \/\/ Socket\u901a\u8baf\u4f7f\u7528Socket\u4e2d\u7684\u5b57\u8282\u6d41\n            Socket socket = new Socket(\"localhost\", 8080);\n            OutputStream os = socket.getOutputStream();\n            \/\/ \u8bfb\u53d6\u672c\u5730\u6587\u4ef6\u4f7f\u7528\u672c\u5730\u5b57\u8282\u6d41\n            FileInputStream fis = new FileInputStream(\"2.txt\");\n            int length = 0;\n            byte[] buffer = new byte[8192];\n            while((length = fis.read(buffer)) != -1) {\n                os.write(buffer, 0, length);\n            }\n            \/\/ \u53d1\u9001\u7ed3\u675f\u6807\u8bb0\n            socket.shutdownOutput();\n            System.out.println(\"\u53d1\u9001\u5b8c\u6bd5...\");\n            \/\/ \u83b7\u53d6\u670d\u52a1\u5668\u53d1\u6765\u7684\u6570\u636e\uff0c\u4f7f\u7528Socket\u4e2d\u7684\u5b57\u8282\u6d41\n            InputStream is = socket.getInputStream();\n            int data = 0;\n            while((data = is.read()) != -1) {\n                System.out.print((char) data);\n            }\n        } catch (IOException e) {\n            e.printStackTrace();\n        }\n    }\n}\n<\/code><\/pre>\n<p><strong>Server<\/strong><\/p>\n<pre><code class=\"language-java line-numbers\">package com.yusian.socket;\n\nimport java.io.FileOutputStream;\nimport java.io.IOException;\nimport java.io.InputStream;\nimport java.io.OutputStream;\nimport java.net.ServerSocket;\nimport java.net.Socket;\nimport java.util.concurrent.ExecutorService;\nimport java.util.concurrent.Executors;\n\npublic class Server {\n    public static void main(String[] args) {\n        try {\n            ServerSocket ss = new ServerSocket(8080);\n            ExecutorService es = Executors.newFixedThreadPool(3);\n            while (true) {\n                \/\/ \u7a0b\u5e8f\u4f1a\u963b\u585e\u5728accept()\u65b9\u6cd5\uff0c\u76f4\u5230\u6709\u5ba2\u6237\u7aef\u8fde\u63a5\u4e0a\u6765\n                Socket socket = ss.accept();\n                \/\/ \u7ebf\u7a0b\u6c60\u4e2d\u62ff\u51fa\u4e00\u4e2a\u7ebf\u7a0b\u6267\u884c\u63a5\u6536\u4efb\u52a1\n                es.submit(() -&gt; fileRecieve(socket));\n            }\n        } catch (IOException e) {\n            e.printStackTrace();\n        }\n    }\n\n    \/\/ \u6587\u4ef6\u63a5\u6536\n    private static void fileRecieve(Socket socket) {\n        try {\n            \/\/ \u83b7\u53d6\u8f93\u5165\u5b57\u8282\u6d41\n            InputStream is = socket.getInputStream();\n            \/\/ \u521b\u5efa\u6587\u4ef6\u8f93\u51fa\u5b57\u8282\u6d41\n            FileOutputStream fos = new FileOutputStream(\"1.txt\");\n            int length = 0;\n            byte[] buffer = new byte[1024];\n            \/\/ \u5c06\u4eceSocket\u8f93\u5165\u6d41\u7684\u6570\u636e\u901a\u8fc7\u6587\u4ef6\u8f93\u51fa\u6d41\u5199\u5165\u5230\u672c\u5730\u6587\u4ef6\n            while ((length = is.read(buffer)) != -1) {\n                fos.write(buffer, 0, length);\n            }\n            System.out.println(\"\u63a5\u6536\u5b8c\u6bd5...\");\n            \/\/ \u63a5\u6536\u5b8c\u6bd5\u540e\u901a\u8fc7Socket\u7684\u8f93\u51fa\u6d41\uff0c\u56de\u590d\u6d88\u606f\u7ed9\u5ba2\u6237\u7aef\n            OutputStream os = socket.getOutputStream();\n            os.write(\"Server: Complete...\".getBytes());\n            \/\/ \u6ce8\u610f\uff1asocket\u4e2d\u7684\u8f93\u51fa\u6d41\u9700\u8981\u901a\u8fc7\u8c03\u7528shutdownOutput\u65b9\u6cd5\u6765\u7ed3\u675f\u8f93\u51fa\n            socket.shutdownOutput();\n        } catch (IOException e) {\n            e.printStackTrace();\n        }\n    }\n}\n<\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Socket\u901a\u8baf\u7684\u57fa\u672c\u5b9e\u73b0 package com.yusian.socket; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.net.ServerSocket; import java.net.Socket; public class SocketDemo { public static void main(String[] args) { \/\/ \u670d\u52a1\u7aef\u8fdb\u7a0b new Thread(() -&gt; { try { \/\/ \u521b\u5efa\u4e00\u4e2aSocket\u670d\u52a1 ServerSocket ss = new ServerSocket(8080); \/\/ \u83b7\u53d6Socket\u7684\u5b57\u8282\u8f93\u5165\u6d41\u5bf9\u8c61\uff0c\u6b64\u65f6\u7a0b\u5e8f\u4f1a\u963b\u585e\u5728\u8fd9\u4e2a\u4f4d\u7f6e\uff0c\u76f4\u5230\u6709\u6570\u636e InputStream is = ss.accept().getInputStream(); int data = 0; \/\/ \u5c06\u63a5\u6536\u5230\u7684\u6570\u636e\u8f93\u51fa\u5230\u63a7\u5236\u53f0 while ((data = is.read()) != [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[35],"tags":[265,192,267,266],"class_list":["post-1582","post","type-post","status-publish","format-standard","hentry","category-java","tag-socket","tag-192","tag-267","tag-266"],"_links":{"self":[{"href":"https:\/\/www.yusian.com\/blog\/wp-json\/wp\/v2\/posts\/1582","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.yusian.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.yusian.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.yusian.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.yusian.com\/blog\/wp-json\/wp\/v2\/comments?post=1582"}],"version-history":[{"count":0,"href":"https:\/\/www.yusian.com\/blog\/wp-json\/wp\/v2\/posts\/1582\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.yusian.com\/blog\/wp-json\/wp\/v2\/media?parent=1582"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.yusian.com\/blog\/wp-json\/wp\/v2\/categories?post=1582"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.yusian.com\/blog\/wp-json\/wp\/v2\/tags?post=1582"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}