Javasocket客户端怎么创建多线程用于监听接收和发送消息
时间: 2024-05-01 15:18:02 浏览: 11
创建Java Socket客户端多线程用于监听接收和发送消息的方法如下:
1. 创建一个客户端线程类,继承Thread类或实现Runnable接口;
2. 在线程类的run()方法中,创建Socket对象,并在其中循环监听客户端的输入流和输出流;
3. 在监听输入流中,使用BufferedReader读取Socket输入流并输出到控制台;
4. 在监听输出流中,使用PrintWriter向Socket的输出流中发送消息;
5. 在主线程中,创建并启动多个客户端线程,即可实现多线程创建Socket客户端监听接收和发送消息的功能。
下面是一个简单示例代码:
```java
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
public class ClientThread extends Thread {
Socket client;
BufferedReader reader;
PrintWriter writer;
public ClientThread(Socket client) throws Exception {
this.client = client;
reader = new BufferedReader(new InputStreamReader(client.getInputStream()));
writer = new PrintWriter(client.getOutputStream());
}
public void run() {
try {
while (true) {
// 监听输入流
String line = reader.readLine();
if (line == null) {
break;
}
System.out.println("Server: " + line);
// 监听输出流
writer.println("Hello Server!");
writer.flush();
}
client.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
```
在主线程中创建和启动多个客户端线程:
```java
import java.net.Socket;
public class MultiClient {
public static void main(String[] args) throws Exception {
int num = 5; // 启动5个客户端
for (int i = 0; i < num; i++) {
Socket client = new Socket("localhost", 8888);
ClientThread c = new ClientThread(client);
c.start();
}
}
}
```
注意:以上示例代码是基于单个线程监听输入流和输出流的情况下,为了实现多线程监听,需要在ClientThread类的run()方法中添加多线程监听输入流和输出流的代码。