Init net.gzw

This commit is contained in:
gzw13
2022-06-09 14:15:25 +08:00
parent 79992a9412
commit e341b772af
10 changed files with 380 additions and 7 deletions

View File

@@ -1,7 +0,0 @@
package com.cfive.classroom.library.net;
public class Test {
public static void run() {
System.out.println("Run net test");
}
}

View File

@@ -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;
}
}

View File

@@ -0,0 +1,5 @@
package com.cfive.classroom.library.net.gzw;
public interface ReceiveListener {
void onReceive(MessageObject messageObject);
}

View File

@@ -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);
}
}
}

View File

@@ -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();
}
}
}

View File

@@ -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();
}
}

View File

@@ -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();
}
}
}

View File

@@ -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();
}
}

View File

@@ -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();
}
}
}

View File

@@ -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);
}
}