yjj vor 4 Jahren
Ursprung
Commit
f1e1dc188e

+ 39 - 0
ear_tag/src/main/java/com/huimv/eartag/socket/Server.java

@@ -0,0 +1,39 @@
+package com.huimv.eartag.socket;
+
+
+import org.springframework.boot.CommandLineRunner;
+import org.springframework.stereotype.Component;
+
+import java.io.*;
+import java.net.ServerSocket;
+import java.net.Socket;
+@Component
+public class Server implements CommandLineRunner {
+
+    @Override
+    public void run(String... args) throws Exception {
+        try {
+
+            // 初始化服务端socket连接,并监听8888端口的socket请求
+            ServerSocket serverSocket = new ServerSocket(10088);
+
+            System.out.println("****** I am Server, now begin to wait the client ******");
+
+            int count = 0;
+
+            // 处理socket请求
+            Socket socket = null;
+            while (true) {
+                socket = serverSocket.accept();
+                ServerThread serverThread = new ServerThread(socket);
+                System.out.println("client host address is: " + socket.getInetAddress().getHostAddress());
+                serverThread.start();
+                count++;
+                System.out.println("now client count is: " + count);
+
+            }
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+    }
+}

+ 100 - 0
ear_tag/src/main/java/com/huimv/eartag/socket/ServerThread.java

@@ -0,0 +1,100 @@
+package com.huimv.eartag.socket;
+
+
+import java.io.*;
+import java.net.ServerSocket;
+import java.net.Socket;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
+
+public class ServerThread extends Thread {
+
+    private Socket socket;
+
+    public ServerThread(Socket socket) {
+        this.socket = socket;
+    }
+
+    @Override
+    public void run() {
+        InputStream inputStream = null;
+        InputStreamReader inputStreamReader = null;
+        BufferedReader bufferedReader = null;
+        OutputStream outputStream = null;
+        PrintWriter printWriter = null;
+
+        try {
+
+            // server接收消息
+            inputStream = socket.getInputStream();
+
+            outputStream = socket.getOutputStream();
+            inputStream = socket.getInputStream();
+            byte[] b = new byte[1024];
+            inputStream.read(b);
+            String line = new String(b);
+
+            int i = line.indexOf("+", line.indexOf("+") + 1);
+            int ver = Integer.parseInt(line.substring(i + 1, i + 2));
+            outputStream = socket.getOutputStream();
+
+
+            //首次应答返回机器ID
+            if (ver == 1){
+
+            }
+
+            if (ver == 2) {
+                SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
+                String time = "hm+2+" + sdf.format(new Date()) + "+4+end";
+                outputStream.write(time.getBytes());
+            }
+            if (ver == 6) {
+                outputStream.write("hm+6+0+6+end".getBytes());
+            }
+            if (ver == 3) {
+                outputStream.write("hm+3+0+6+end".getBytes());
+
+            }
+
+            if (ver == 4) {
+                outputStream.write("hm+4+0+7+end".getBytes());
+
+            }
+            if (ver == 8) {
+                outputStream.write("hm+5+0+8+end".getBytes());
+            }
+
+            socket.shutdownInput();
+
+        } catch (IOException e) {
+            e.printStackTrace();
+        } finally {
+            // 关闭资源
+            try {
+                if (printWriter != null) {
+                    printWriter.close();
+                }
+                if (outputStream != null) {
+                    outputStream.close();
+
+                }
+                if (bufferedReader != null) {
+                    bufferedReader.close();
+                }
+                if (inputStreamReader != null) {
+                    inputStreamReader.close();
+                }
+                if (inputStream != null) {
+                    inputStream.close();
+                }
+                if (socket != null) {
+                    socket.close();
+                }
+            } catch (IOException e) {
+                e.printStackTrace();
+            }
+        }
+    }
+}