模拟服务器

import java.net.ServerSocket;
import java.net.Socket;

public class Server {
public static void main(String[] args) {
System.out.println("服务端启动");
try {
ServerSocket serverSocket = new ServerSocket(9001);
while (true) {
Socket socket = serverSocket.accept();
new Thread(new ServerListen(socket)).start();
new Thread(new ServerSend(socket)).start();
}
} catch (Exception e) {
e.printStackTrace();
}
}
}

服务器用于监听消息

import java.io.ObjectInputStream;
import java.net.Socket;

public class ServerListen implements Runnable {
private Socket socket;

public ServerListen(Socket socket) {
this.socket = socket;
}

@Override
public void run() {
try {
ObjectInputStream objectInputStream = new ObjectInputStream(socket.getInputStream());

while (true) {
System.out.println(objectInputStream.readObject());
}
} catch (Exception e) {
e.printStackTrace();
}
}
}

服务器用于发送消息

import com.alibaba.fastjson.JSONObject;

import java.io.ObjectOutputStream;
import java.net.Socket;
import java.util.Scanner;

public class ServerSend implements Runnable {
private Socket socket;

public ServerSend(Socket socket) {
this.socket = socket;
}

@Override
public void run() {
try {
ObjectOutputStream objectOutputStream = new ObjectOutputStream(socket.getOutputStream());
Scanner sc = new Scanner(System.in);
while (true) {
System.out.println("服务端 请输入:");
String string = sc.nextLine();

JSONObject jsonObject = new JSONObject();
jsonObject.put("type", "msg");
jsonObject.put("content", string);

objectOutputStream.writeObject(jsonObject);
objectOutputStream.flush();
}
} catch (Exception e) {
e.printStackTrace();
}
}
}

模拟客户端

import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.net.Socket;

public class Client {
private static Socket socket;
private static boolean socket_status = false;

public static void main(String[] args) {
connect();
System.out.println("客户端:已建立连接");
}

private static void connect() {
try {
socket = new Socket("127.0.0.1", 9001);
socket_status = true;
ObjectOutputStream objectOutputStream = new ObjectOutputStream(socket.getOutputStream());
ObjectInputStream objectInputStream = new ObjectInputStream(socket.getInputStream());

new Thread(new ClientListen(socket, objectInputStream)).start();
new Thread(new ClientSend(socket, objectOutputStream)).start();

} catch (Exception e) {
e.printStackTrace();
}
}
}

客户端用于监听消息

import java.io.ObjectInputStream;
import java.net.Socket;

public class ClientListen implements Runnable {
private Socket socket;
private ObjectInputStream objectInputStream;

public ClientListen(Socket socket, ObjectInputStream objectInputStream) {
this.socket = socket;
this.objectInputStream = objectInputStream;
}

@Override
public void run() {
try {
System.out.println(objectInputStream.readObject());
} catch (Exception e) {
e.printStackTrace();
}
}
}

客户端用于发送消息

import com.alibaba.fastjson.JSONObject;

import java.io.ObjectOutputStream;
import java.net.Socket;
import java.util.Scanner;

public class ClientSend implements Runnable {
private Socket socket;
private ObjectOutputStream objectOutputStream;

public ClientSend(Socket socket, ObjectOutputStream objectOutputStream) {
this.objectOutputStream = objectOutputStream;
this.socket = socket;
}

@Override
public void run() {
try {
Scanner sc = new Scanner(System.in);
while (true) {
System.out.println("客户端 请输入:");
String string = sc.nextLine();

JSONObject jsonObject = new JSONObject();
jsonObject.put("type", "msg");
jsonObject.put("content", string);

objectOutputStream.writeObject(jsonObject);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}

效果如下:

image-20240803155913870

image-20240803155921812