socket 多线程 java_Java Socket 通信之多线程
时间: 2023-07-09 17:26:50 浏览: 120
在 Java 中进行 Socket 通信时,我们可以使用多线程来实现同时与多个客户端进行通信。这种方式可以提高服务器的并发处理能力。
具体实现方法是,服务器端使用一个主线程监听客户端的连接请求,当有新的连接请求时,主线程创建一个新的线程来处理该客户端的请求。这样,每个客户端的请求都会在一个单独的线程中进行处理,互不影响。
以下是一个简单的 Java Socket 多线程服务器端代码示例:
```java
import java.net.*;
import java.io.*;
public class MultiThreadServer implements Runnable {
private Socket clientSocket;
public MultiThreadServer(Socket clientSocket) {
this.clientSocket = clientSocket;
}
public static void main(String[] args) throws IOException {
ServerSocket serverSocket = new ServerSocket(8080);
System.out.println("Server started");
while (true) {
Socket clientSocket = serverSocket.accept();
System.out.println("Accepted connection from " + clientSocket);
new Thread(new MultiThreadServer(clientSocket)).start();
}
}
public void run() {
try {
PrintWriter out = new PrintWriter(clientSocket.getOutputStream(), true);
BufferedReader in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
String inputLine;
while ((inputLine = in.readLine()) != null) {
System.out.println("Received message: " + inputLine);
out.println("Message received: " + inputLine);
}
in.close();
out.close();
clientSocket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
```
在上面的代码中,我们创建了一个 MultiThreadServer 类来处理客户端请求。在 main 方法中,我们首先创建了一个 ServerSocket 并在端口 8080 上监听客户端连接请求。当有新的连接请求时,我们创建一个新的 MultiThreadServer 线程来处理该客户端的请求。
在 MultiThreadServer 类中,我们实现了 Runnable 接口,并重写了 run 方法。在 run 方法中,我们使用 BufferedReader 和 PrintWriter 来读取和发送消息。注意,在处理完一个客户端请求后,我们需要关闭连接。
以上就是一个简单的 Java Socket 多线程服务器端代码示例。通过这种方式,我们可以轻松实现高并发的 Socket 通信。
阅读全文