fanjialong 4 روز پیش
والد
کامیت
5178f94429

+ 29 - 0
tcp-demo/.gitignore

@@ -0,0 +1,29 @@
+### IntelliJ IDEA ###
+out/
+!**/src/main/**/out/
+!**/src/test/**/out/
+
+### Eclipse ###
+.apt_generated
+.classpath
+.factorypath
+.project
+.settings
+.springBeans
+.sts4-cache
+bin/
+!**/src/main/**/bin/
+!**/src/test/**/bin/
+
+### NetBeans ###
+/nbproject/private/
+/nbbuild/
+/dist/
+/nbdist/
+/.nb-gradle/
+
+### VS Code ###
+.vscode/
+
+### Mac OS ###
+.DS_Store

+ 8 - 0
tcp-demo/.idea/.gitignore

@@ -0,0 +1,8 @@
+# Default ignored files
+/shelf/
+/workspace.xml
+# Editor-based HTTP Client requests
+/httpRequests/
+# Datasource local storage ignored files
+/dataSources/
+/dataSources.local.xml

+ 6 - 0
tcp-demo/.idea/misc.xml

@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="ProjectRootManager" version="2" languageLevel="JDK_1_8" default="true" project-jdk-name="1.8" project-jdk-type="JavaSDK">
+    <output url="file://$PROJECT_DIR$/out" />
+  </component>
+</project>

+ 8 - 0
tcp-demo/.idea/modules.xml

@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="ProjectModuleManager">
+    <modules>
+      <module fileurl="file://$PROJECT_DIR$/tcp-demo.iml" filepath="$PROJECT_DIR$/tcp-demo.iml" />
+    </modules>
+  </component>
+</project>

+ 6 - 0
tcp-demo/.idea/vcs.xml

@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="VcsDirectoryMappings">
+    <mapping directory="$PROJECT_DIR$/.." vcs="Git" />
+  </component>
+</project>

+ 33 - 0
tcp-demo/src/_01_tcp_hello/Client.java

@@ -0,0 +1,33 @@
+package _01_tcp_hello;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.net.Socket;
+
+public class Client {
+    public static void main(String[] args) throws IOException {
+//        1 创建一个连接某个服务Socke对象
+        /**
+         * 第一个参数: ip 地址
+         * 第二个参数: port 端口号
+         */
+        Socket socket = new Socket("localhost",8888);
+//        2 从Socket中拿到输出流服务端发送数据
+        OutputStream outputStream = socket.getOutputStream();
+        outputStream.write("hello 服务端".getBytes());
+//        3 调用Socket对象shutdownOutput 方法通知服务端数据发送完毕
+        socket.shutdownOutput();
+//        4 从Socket中拿到输入流获取服务端回馈的数据
+        InputStream inputStream = socket.getInputStream();
+        byte[] buff= new byte[1024];
+        int len = -1;
+        while ((len = inputStream.read(buff))!=-1){
+            System.out.println(new String(buff,0,len));
+        }
+//        5 调用Socket对象shutdownInput方法通知服务端数据收集完毕
+        socket.shutdownInput();
+//        6 关闭Socket对象
+        socket.close();
+    }
+}

+ 32 - 0
tcp-demo/src/_01_tcp_hello/Server.java

@@ -0,0 +1,32 @@
+package _01_tcp_hello;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.net.ServerSocket;
+import java.net.Socket;
+
+public class Server {
+    public static void main(String[] args) throws IOException {
+//        1:创建一个服务端对象(ServerSocket)
+        ServerSocket serverSocket = new ServerSocket(8888);
+//        2:侦听客户端的连接,获取和客户端通信的Socket对象
+        Socket socket = serverSocket.accept();
+//        3:从Socket获取输入流,接收服务器发送的数据
+        InputStream inputStream = socket.getInputStream();
+        byte[] buff= new byte[1024];
+        int len = -1;
+        while ((len = inputStream.read(buff))!=-1){
+            System.out.println(new String(buff,0,len));
+        }
+//        5 调用Socket对象shutdownInput方法通知服务端数据收集完毕
+        socket.shutdownInput();
+
+        OutputStream outputStream = socket.getOutputStream();
+        outputStream.write("hello client".getBytes());
+//        3 调用Socket对象shutdownOutput 方法通知服务端数据发送完毕
+        socket.shutdownOutput();
+//        7:关闭Socket对象
+        socket.close();
+    }
+}

+ 39 - 0
tcp-demo/src/_02_chat/Client.java

@@ -0,0 +1,39 @@
+package _02_chat;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.net.Socket;
+import java.util.Scanner;
+
+public class Client {
+    public static void main(String[] args) throws IOException {
+//        1 创建一个连接某个服务Socke对象
+        Scanner scanner = new Scanner(System.in);
+        while (true){
+            /**
+             * 第一个参数: ip 地址
+             * 第二个参数: port 端口号
+             */
+            Socket socket = new Socket("localhost",8888);
+//        2 从Socket中拿到输出流服务端发送数据
+            OutputStream outputStream = socket.getOutputStream();
+            String msg = scanner.nextLine();
+            outputStream.write(msg.getBytes());
+//        3 调用Socket对象shutdownOutput 方法通知服务端数据发送完毕
+            socket.shutdownOutput();
+//        4 从Socket中拿到输入流获取服务端回馈的数据
+            InputStream inputStream = socket.getInputStream();
+            byte[] buff= new byte[1024];
+            int len = -1;
+            while ((len = inputStream.read(buff))!=-1){
+                System.out.println("迪丽热巴:"+new String(buff,0,len));
+            }
+//        5 调用Socket对象shutdownInput方法通知服务端数据收集完毕
+            socket.shutdownInput();
+//        6 关闭Socket对象
+            socket.close();
+        }
+
+    }
+}

+ 38 - 0
tcp-demo/src/_02_chat/Server.java

@@ -0,0 +1,38 @@
+package _02_chat;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.net.ServerSocket;
+import java.net.Socket;
+import java.util.Scanner;
+
+public class Server {
+    public static void main(String[] args) throws IOException {
+        Scanner scanner = new Scanner(System.in);
+//        1:创建一个服务端对象(ServerSocket)
+        ServerSocket serverSocket = new ServerSocket(8888);
+        while (true){
+            //        2:侦听客户端的连接,获取和客户端通信的Socket对象
+            Socket socket = serverSocket.accept();
+//        3:从Socket获取输入流,接收服务器发送的数据
+            InputStream inputStream = socket.getInputStream();
+            byte[] buff= new byte[1024];
+            int len = -1;
+            while ((len = inputStream.read(buff))!=-1){
+                System.out.println("粉丝:"+new String(buff,0,len));
+            }
+            String inputMsg = scanner.nextLine();
+//        5 调用Socket对象shutdownInput方法通知服务端数据收集完毕
+            socket.shutdownInput();
+
+            OutputStream outputStream = socket.getOutputStream();
+            outputStream.write(inputMsg.getBytes());
+//        3 调用Socket对象shutdownOutput 方法通知服务端数据发送完毕
+            socket.shutdownOutput();
+//        7:关闭Socket对象
+            socket.close();
+        }
+
+    }
+}

+ 11 - 0
tcp-demo/tcp-demo.iml

@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<module type="JAVA_MODULE" version="4">
+  <component name="NewModuleRootManager" inherit-compiler-output="true">
+    <exclude-output />
+    <content url="file://$MODULE_DIR$">
+      <sourceFolder url="file://$MODULE_DIR$/src" isTestSource="false" />
+    </content>
+    <orderEntry type="inheritedJdk" />
+    <orderEntry type="sourceFolder" forTests="false" />
+  </component>
+</module>