java socket单线程变多线程编程
时间: 2023-10-23 17:35:17 浏览: 93
JAVA单线程多线程
4星 · 用户满意度95%
在 Java 中,可以将单线程的 Socket 编程转换为多线程编程。这样可以实现多个客户端同时连接服务器并进行并发处理。
下面是一个简单的示例代码,演示了如何使用多线程处理 Socket 连接:
```java
import java.io.*;
import java.net.*;
public class MultiThreadedServer {
public static void main(String[] args) throws IOException {
ServerSocket serverSocket = new ServerSocket(8080);
System.out.println("服务器已启动,等待客户端连接...");
while (true) {
Socket clientSocket = serverSocket.accept();
System.out.println("客户端连接成功,IP:" + clientSocket.getInetAddress());
Thread clientThread = new ClientThread(clientSocket);
clientThread.start();
}
}
static class ClientThread extends Thread {
private Socket clientSocket;
public ClientThread(Socket socket) {
this.clientSocket = socket;
}
public void run() {
try {
BufferedReader in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
PrintWriter out = new PrintWriter(clientSocket.getOutputStream(), true);
// 读取客户端发送的数据
String message = in.readLine();
System.out.println("接收到客户端消息:" + message);
// 向客户端发送响应数据
out.println("已收到消息:" + message);
// 关闭连接
clientSocket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
```
在上述代码中,主线程通过 `ServerSocket` 监听指定端口,并在有客户端连接时创建一个新的线程 `ClientThread` 进行处理。`ClientThread` 类继承自 `Thread` 类,重写 `run` 方法,在其中进行与客户端的通信。
通过这种方式,每个客户端连接都会在独立的线程中进行处理,从而实现了多线程的 Socket 编程。这样可以充分利用系统资源,并提高服务器的并发处理能力。
阅读全文