From e341b772afec3353040f6f8b12cce5078bee7bee Mon Sep 17 00:00:00 2001 From: gzw13 <1571020389@qq.com> Date: Thu, 9 Jun 2022 14:15:25 +0800 Subject: [PATCH] Init net.gzw --- .../com/cfive/classroom/library/net/Test.java | 7 --- .../library/net/gzw/MessageObject.java | 60 +++++++++++++++++++ .../library/net/gzw/ReceiveListener.java | 5 ++ .../library/net/gzw/RecieveThread.java | 47 +++++++++++++++ .../classroom/library/net/gzw/SendThread.java | 35 +++++++++++ .../classroom/library/net/gzw/StudentNet.java | 43 +++++++++++++ .../library/net/gzw/StudentSendThread.java | 43 +++++++++++++ .../classroom/library/net/gzw/TeacherNet.java | 59 ++++++++++++++++++ .../library/net/gzw/TeacherRecieveThread.java | 38 ++++++++++++ .../classroom/library/net/StudentTest.java | 50 ++++++++++++++++ 10 files changed, 380 insertions(+), 7 deletions(-) delete mode 100644 Library/src/main/java/com/cfive/classroom/library/net/Test.java create mode 100644 Library/src/main/java/com/cfive/classroom/library/net/gzw/MessageObject.java create mode 100644 Library/src/main/java/com/cfive/classroom/library/net/gzw/ReceiveListener.java create mode 100644 Library/src/main/java/com/cfive/classroom/library/net/gzw/RecieveThread.java create mode 100644 Library/src/main/java/com/cfive/classroom/library/net/gzw/SendThread.java create mode 100644 Library/src/main/java/com/cfive/classroom/library/net/gzw/StudentNet.java create mode 100644 Library/src/main/java/com/cfive/classroom/library/net/gzw/StudentSendThread.java create mode 100644 Library/src/main/java/com/cfive/classroom/library/net/gzw/TeacherNet.java create mode 100644 Library/src/main/java/com/cfive/classroom/library/net/gzw/TeacherRecieveThread.java create mode 100644 Library/src/test/java/com/cfive/classroom/library/net/StudentTest.java diff --git a/Library/src/main/java/com/cfive/classroom/library/net/Test.java b/Library/src/main/java/com/cfive/classroom/library/net/Test.java deleted file mode 100644 index 0d87f21..0000000 --- a/Library/src/main/java/com/cfive/classroom/library/net/Test.java +++ /dev/null @@ -1,7 +0,0 @@ -package com.cfive.classroom.library.net; - -public class Test { - public static void run() { - System.out.println("Run net test"); - } -} diff --git a/Library/src/main/java/com/cfive/classroom/library/net/gzw/MessageObject.java b/Library/src/main/java/com/cfive/classroom/library/net/gzw/MessageObject.java new file mode 100644 index 0000000..8c4a35d --- /dev/null +++ b/Library/src/main/java/com/cfive/classroom/library/net/gzw/MessageObject.java @@ -0,0 +1,60 @@ +package com.cfive.classroom.library.net.gzw; + +import java.io.Serializable; + +public class MessageObject implements Serializable { + private String stuNo; + private String stuName; + private String code; + private String count; + private String message; + public MessageObject(){} + + public MessageObject(String stuNo, String name, String code, String message,String count) { + this.stuNo = stuNo; + this.stuName = name; + this.code = code; + this.message = message; + this.count = count; + } + + public String getStuNo() { + return stuNo; + } + + public void setStuNo(String stuNo) { + this.stuNo = stuNo; + } + + public String getStuName() { + return stuName; + } + + public void setStuName(String stuName) { + this.stuName = stuName; + } + + public String getCode() { + return code; + } + + public void setCode(String code) { + this.code = code; + } + + public String getCount() { + return count; + } + + public void setCount(String count) { + this.count = count; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } +} diff --git a/Library/src/main/java/com/cfive/classroom/library/net/gzw/ReceiveListener.java b/Library/src/main/java/com/cfive/classroom/library/net/gzw/ReceiveListener.java new file mode 100644 index 0000000..b39a11b --- /dev/null +++ b/Library/src/main/java/com/cfive/classroom/library/net/gzw/ReceiveListener.java @@ -0,0 +1,5 @@ +package com.cfive.classroom.library.net.gzw; + +public interface ReceiveListener { + void onReceive(MessageObject messageObject); +} diff --git a/Library/src/main/java/com/cfive/classroom/library/net/gzw/RecieveThread.java b/Library/src/main/java/com/cfive/classroom/library/net/gzw/RecieveThread.java new file mode 100644 index 0000000..b21bf7c --- /dev/null +++ b/Library/src/main/java/com/cfive/classroom/library/net/gzw/RecieveThread.java @@ -0,0 +1,47 @@ +package com.cfive.classroom.library.net.gzw; + +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +import java.io.*; +import java.net.Socket; + +public class RecieveThread extends Thread { + private static final Logger LOGGER = LogManager.getLogger(); + private Socket socket; + private ReceiveListener receiveListener; + private MessageObject messageObject; + public RecieveThread(Socket socket) { + this.socket = socket; + } + public void setOnReceiveListener(ReceiveListener receiveListener) { + this.receiveListener = receiveListener; + } + public void run() { + try { + // 接收对方输入的内容 + InputStream inputStream = socket.getInputStream(); + ObjectInputStream objectInputStreamInputStream = new ObjectInputStream(inputStream); + + while (true) { + + messageObject = (MessageObject) objectInputStreamInputStream.readObject(); +// LOGGER.info(messageObject); + if (receiveListener != null) { + receiveListener.onReceive(messageObject); + } +// System.out.println(msg); + } + + } catch (IOException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (ClassNotFoundException e) { + throw new RuntimeException(e); + } + } + + + + +} diff --git a/Library/src/main/java/com/cfive/classroom/library/net/gzw/SendThread.java b/Library/src/main/java/com/cfive/classroom/library/net/gzw/SendThread.java new file mode 100644 index 0000000..5231617 --- /dev/null +++ b/Library/src/main/java/com/cfive/classroom/library/net/gzw/SendThread.java @@ -0,0 +1,35 @@ +package com.cfive.classroom.library.net.gzw; + +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +import java.io.DataOutputStream; +import java.io.IOException; +import java.io.ObjectOutputStream; +import java.io.OutputStream; +import java.net.Socket; +import java.util.Scanner; + +public class SendThread extends Thread{ + private static final Logger LOGGER = LogManager.getLogger(); + private Socket socket; + private MessageObject messageObject; + public SendThread(Socket socket,MessageObject messageObject) { + this.socket = socket; + this.messageObject = messageObject; + } + public void run() { + try { + + // 获取输入的内容 + OutputStream outputStream = socket.getOutputStream(); + ObjectOutputStream objectOutputStream = new ObjectOutputStream(outputStream); + objectOutputStream.writeObject(messageObject); + } catch (IOException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + + + } +} diff --git a/Library/src/main/java/com/cfive/classroom/library/net/gzw/StudentNet.java b/Library/src/main/java/com/cfive/classroom/library/net/gzw/StudentNet.java new file mode 100644 index 0000000..a9cb6e3 --- /dev/null +++ b/Library/src/main/java/com/cfive/classroom/library/net/gzw/StudentNet.java @@ -0,0 +1,43 @@ +package com.cfive.classroom.library.net.gzw; + +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +import java.io.IOException; +import java.net.Socket; +import java.net.UnknownHostException; + +public class StudentNet { + private static final Logger LOGGER = LogManager.getLogger(); + private Socket socket; + private MessageObject messageObject = new MessageObject(); + +/* + public StudentNet(String host, int port, ReceiveListener receiveListener) throws IOException { + socketConnect(host, port); + receiveMessageThread(receiveListener); + } +*/ + public StudentNet(){} + + public void socketConnect(String host, int port) throws UnknownHostException, IOException + { + socket = new Socket(host, port); + } + + //发送 + public void sendMessageThread(MessageObject messageObject) { + SendThread sendThread = new SendThread(socket, messageObject); + sendThread.start(); + } + + //接受信息 + public void receiveMessageThread(ReceiveListener receiveListener) + { + RecieveThread recieveThread = new RecieveThread(socket); + recieveThread.setOnReceiveListener(receiveListener); + recieveThread.start(); + } + + +} diff --git a/Library/src/main/java/com/cfive/classroom/library/net/gzw/StudentSendThread.java b/Library/src/main/java/com/cfive/classroom/library/net/gzw/StudentSendThread.java new file mode 100644 index 0000000..c5e6431 --- /dev/null +++ b/Library/src/main/java/com/cfive/classroom/library/net/gzw/StudentSendThread.java @@ -0,0 +1,43 @@ +package com.cfive.classroom.library.net.gzw; + +import java.io.DataOutputStream; +import java.io.IOException; +import java.io.OutputStream; +import java.net.Socket; +import java.util.Scanner; + +public class StudentSendThread extends Thread { + private Socket socket; + private String stuNo; + private String name; + public StudentSendThread(Socket socket,String stuNo,String name) { + this.socket = socket; + this.stuNo=stuNo; + this.name=name; + } + public void run() { + try { + + // 获取输入的内容 + OutputStream outputStream = socket.getOutputStream(); + DataOutputStream dataOutputStream = new DataOutputStream(outputStream); +/* + + while (true) { + + dataOutputStream.writeUTF(stuNo+"\t"+name); + dataOutputStream.writeUTF(stuNo); + dataOutputStream.writeUTF(name); + } +*/ + dataOutputStream.writeUTF(stuNo); + dataOutputStream.writeUTF(name); + + } catch (IOException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + + + } +} diff --git a/Library/src/main/java/com/cfive/classroom/library/net/gzw/TeacherNet.java b/Library/src/main/java/com/cfive/classroom/library/net/gzw/TeacherNet.java new file mode 100644 index 0000000..2955f33 --- /dev/null +++ b/Library/src/main/java/com/cfive/classroom/library/net/gzw/TeacherNet.java @@ -0,0 +1,59 @@ +package com.cfive.classroom.library.net.gzw; + +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +import java.io.IOException; +import java.net.ServerSocket; +import java.net.Socket; +import java.util.Scanner; + +public class TeacherNet { + private static final Logger LOGGER = LogManager.getLogger(); + private ServerSocket serverSocket; + private Socket socket; + private MessageObject messageObject = new MessageObject();; +/* + public static void main(String[] args) { + TeacherNet teacher = new TeacherNet(); + try { + teacher.socketConnect(); + teacher.sendThreadStart(); +// teacher.teacherReceive(); + } catch (IOException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + + + } +*/ + + + public void socketConnect(int port) throws IOException + {// 监听端口 + serverSocket = new ServerSocket(port); + socket = serverSocket.accept(); + } + + + //发送 + public void sendMessageThread(MessageObject messageObject) { + SendThread sendThread = new SendThread(socket, messageObject); + sendThread.start(); + //打斷線程 + sendThread.interrupt(); + } + + + //接受信息 + public void receiveMessageThread(ReceiveListener receiveListener) + { + RecieveThread recieveThread = new RecieveThread(socket); + recieveThread.setOnReceiveListener(receiveListener); + recieveThread.start(); + } + + + +} diff --git a/Library/src/main/java/com/cfive/classroom/library/net/gzw/TeacherRecieveThread.java b/Library/src/main/java/com/cfive/classroom/library/net/gzw/TeacherRecieveThread.java new file mode 100644 index 0000000..c8edf7a --- /dev/null +++ b/Library/src/main/java/com/cfive/classroom/library/net/gzw/TeacherRecieveThread.java @@ -0,0 +1,38 @@ +package com.cfive.classroom.library.net.gzw; + +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +import java.io.DataInputStream; +import java.io.IOException; +import java.io.InputStream; +import java.net.Socket; + +public class TeacherRecieveThread extends Thread{ + private static final Logger LOGGER = LogManager.getLogger(); + private Socket socket; + private String stuNo; + private String name; + public TeacherRecieveThread(Socket socket) { + this.socket = socket; + + } + public void run() { + try { + // 接收对方输入的内容 + InputStream inputStream = socket.getInputStream(); + DataInputStream dataInputStream = new DataInputStream(inputStream); + + while (true) { + stuNo = dataInputStream.readUTF(); + name = dataInputStream.readUTF(); + LOGGER.info(stuNo); + LOGGER.info(name); + } + } catch (IOException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + + } +} diff --git a/Library/src/test/java/com/cfive/classroom/library/net/StudentTest.java b/Library/src/test/java/com/cfive/classroom/library/net/StudentTest.java new file mode 100644 index 0000000..6916e6c --- /dev/null +++ b/Library/src/test/java/com/cfive/classroom/library/net/StudentTest.java @@ -0,0 +1,50 @@ +package com.cfive.classroom.library.net; + +import com.cfive.classroom.library.net.gzw.MessageObject; +import com.cfive.classroom.library.net.gzw.ReceiveListener; +import com.cfive.classroom.library.net.gzw.StudentNet; +import com.cfive.classroom.library.net.gzw.TeacherNet; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; +import org.junit.jupiter.api.Test; + +import java.io.IOException; +import java.util.Scanner; + +public class StudentTest { + private static final Logger LOGGER = LogManager.getLogger(); + + @Test + void studentListenterTest() { + StudentNet studentNet = new StudentNet(); + try { + studentNet.socketConnect("localhost",8888); + } catch (IOException e) { + throw new RuntimeException(e); + } + + studentNet.receiveMessageThread(new ReceiveListener() { + @Override + public void onReceive(MessageObject messageObject) { + LOGGER.info(messageObject.getCode()); + } + }); + while(true); + } + + + @Test + void teacherListenterTes() { + TeacherNet teacherNet = new TeacherNet(); + try { + teacherNet.socketConnect(8888); + } catch (IOException e) { + throw new RuntimeException(e); + } + + MessageObject messageObject = new MessageObject(); + messageObject.setCode("123"); + teacherNet.sendMessageThread(messageObject); + while(true); + } +}