import java.io.*;
import java.net.*;
public class ChatServer {
public static void main(String[] args) {
try {
// 创建一个服务器套接字,监听在端口号12345
ServerSocket serverSocket = new ServerSocket(12345);
System.out.println("等待客户端连接...");
// 接受客户端的连接请求,返回一个与客户端连接的套接字
Socket clientSocket = serverSocket.accept();
System.out.println("客户端已连接:" + clientSocket.getInetAddress().getHostAddress());
// 用于从客户端读取数据的输入流
BufferedReader in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
// 用于向客户端发送数据的输出流
PrintWriter out = new PrintWriter(clientSocket.getOutputStream(), true);
// 用于从控制台读取输入的输入流
BufferedReader consoleReader = new BufferedReader(new InputStreamReader(System.in));
String clientMessage, serverMessage;
// 无限循环,实现消息的交互
while (true) {
System.out.print("我: ");
// 从控制台读取输入作为服务器要发送的消息
serverMessage = consoleReader.readLine();
// 将服务器消息发送给客户端
out.println(serverMessage);
// 从客户端读取消息
clientMessage = in.readLine();
System.out.println("客户端: " + clientMessage);
// 如果任意一方发送了 "exit",则退出循环
if (serverMessage.equalsIgnoreCase("exit") || clientMessage.equalsIgnoreCase("exit")) {
break;
}
}
// 关闭各种流和套接字
in.close();
out.close();
consoleReader.close();
clientSocket.close();
serverSocket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
import java.io.*;
import java.net.*;
public class ChatClient {
public static void main(String[] args) {
try {
// 创建一个套接字,连接到服务器的 IP 地址和端口号
Socket socket = new Socket("localhost", 12345);
System.out.println("已连接到服务器");
// 用于从服务器读取数据的输入流
BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
// 用于向服务器发送数据的输出流
PrintWriter out = new PrintWriter(socket.getOutputStream(), true);
// 用于从控制台读取输入的输入流
BufferedReader consoleReader = new BufferedReader(new InputStreamReader(System.in));
String serverMessage, clientMessage;
// 无限循环,实现消息的交互
while (true) {
// 从服务器读取消息
serverMessage = in.readLine();
System.out.println("服务器: " + serverMessage);
System.out.print("我: ");
// 从控制台读取输入作为客户端要发送的消息
clientMessage = consoleReader.readLine();
// 将客户端消息发送给服务器
out.println(clientMessage);
// 如果任意一方发送了 "exit",则退出循环
if (serverMessage.equalsIgnoreCase("exit") || clientMessage.equalsIgnoreCase("exit")) {
break;
}
}
// 关闭各种流和套接字
in.close();
out.close();
consoleReader.close();
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}