java socekt 多个客户端
时间: 2023-09-06 14:07:37 浏览: 43
要实现 Java Socket 多个客户端,可以采用多线程的方式,每当有一个新的客户端连接时,就启动一个新的线程来处理该客户端的请求。具体实现步骤如下:
1. 创建服务器端的 ServerSocket 对象,指定端口号和最大连接数。
2. 在服务器端创建一个无限循环,不断等待客户端的连接请求。
3. 当有客户端连接请求时,服务器端接受到客户端的 Socket 对象,启动一个新的线程来处理该客户端的请求。
4. 在新线程中,通过客户端的 Socket 对象获取输入输出流,实现与客户端的通讯。
5. 主线程继续监听其他客户端的连接请求,重复上述步骤。
下面是一个简单的代码示例:
```java
import java.net.*;
import java.io.*;
public class Server {
public static void main(String[] args) throws IOException {
ServerSocket serverSocket = new ServerSocket(9999);
System.out.println("Server started.");
while (true) {
Socket clientSocket = serverSocket.accept();
System.out.println("Client connected.");
Thread thread = new Thread(new ClientHandler(clientSocket));
thread.start();
}
}
}
class ClientHandler implements Runnable {
private Socket clientSocket;
public ClientHandler(Socket clientSocket) {
this.clientSocket = clientSocket;
}
public void run() {
try {
InputStream input = clientSocket.getInputStream();
OutputStream output = clientSocket.getOutputStream();
// 处理客户端的请求,可以使用 BufferedReader 和 PrintWriter 等工具类
// ...
clientSocket.close();
System.out.println("Client disconnected.");
} catch (IOException e) {
e.printStackTrace();
}
}
}
```
在代码中,Server 类创建了一个 ServerSocket 对象,通过 accept() 方法等待客户端的连接请求。当有新的客户端连接时,创建一个新的线程 ClientHandler 来处理该客户端的请求。在 ClientHandler 线程中,通过 Socket 对象获取输入输出流,实现与客户端的通讯。在处理完客户端请求后,关闭 Socket 连接,结束线程。