客户端
// 客户端
import java.io.*;
import java.net.*;
class Client {
public static void main(String[] args) throws IOException {
// 连接到服务器端指定的IP地址和端口
Socket socket = new Socket("192.168.43.186", 5000);
// 创建一个新的线程来处理从服务器接收的消息
new Thread(new IncomingReader(socket)).start();
// 获取用户在控制台的输入
BufferedReader userInput = new BufferedReader(new InputStreamReader(System.in));
// 用于向服务器发送消息
PrintWriter out = new PrintWriter(socket.getOutputStream(), true);
while (true) {
// 读取用户输入
String input = userInput.readLine();
// 如果用户输入"exit"则退出循环
if (input.equals("exit")) {
break;
}
// 向服务器发送消息
out.println(input);
}
}
}
// 该线程在后台运行,负责读取服务器的消息并打印输出
class IncomingReader implements Runnable {
private Socket socket;
public IncomingReader(Socket socket) {
this.socket = socket;
}
@Override
public void run() {
try {
// 获取socket的InputStream
BufferedReader reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
String message;
// 持续读取服务器发送的消息
while ((message = reader.readLine()) != null) {
System.out.println("Server: " + message);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
服务器端
// 服务器端
import java.io.*;
import java.net.*;
class Server {
public static void main(String[] args) throws IOException {
// 在端口5000上监听连接
ServerSocket server = new ServerSocket(5000);
// 接收客户端连接请求
Socket socket = server.accept();
// 为每个客户端连接创建一个新的线程进行处理
new Thread(new ClientHandler(socket)).start();
// 关闭服务器端口
server.close();
}
}
// 客户端处理线程
class ClientHandler implements Runnable {
private Socket socket;
public ClientHandler(Socket socket) {
this.socket = socket;
}
@Override
public void run() {
try {
// 获取 socket 的输入流用于接收数据
BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
// 获取 socket 的输出流用于发送数据
PrintWriter out = new PrintWriter(socket.getOutputStream(), true);
while (true) {
// 读取客户端发送来的消息
String message = in.readLine();
// 如果客户端发送"exit"则关闭连接
if (message.equals("exit")) {
break;
}
// 打印接收到的消息
System.out.println("Client: " + message);
// 回复客户端
out.println("Message received");
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
ip地址输入127.0.0.1,可以在自己电脑测试代码。
如果想要两个电脑测试,最简单的方法则是两台设备在同一个局域网(比如:手机热点)内,Win + R 输入 cmd ,输入 ipconfig 查看自己的 ip 地址,然后改为对方的IP地址即可,在客户端发送信息,然后在服务器端接收信息