基于java 封装tcp sockeet连接永久 监听消息以及发送消息
时间: 2024-01-16 16:02:23 浏览: 24
要基于Java封装一个TCP Socket连接并实现永久监听消息和发送消息的功能,你可以使用多线程来实现。
首先,创建一个名为`TcpSocketClient`的类来封装客户端的功能:
```java
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
public class TcpSocketClient {
private Socket socket;
private BufferedReader reader;
private PrintWriter writer;
private Thread listenerThread;
public TcpSocketClient(String host, int port) {
try {
socket = new Socket(host, port);
reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
writer = new PrintWriter(socket.getOutputStream(), true);
// 创建线程用于监听服务器消息
listenerThread = new Thread(new MessageListener());
listenerThread.start();
} catch (IOException e) {
e.printStackTrace();
}
}
public void sendMessage(String message) {
writer.println(message);
}
public void close() {
try {
listenerThread.interrupt(); // 停止监听线程
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
private class MessageListener implements Runnable {
@Override
public void run() {
try {
String message;
while ((message = reader.readLine()) != null) {
System.out.println("收到消息: " + message);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
```
然后,你可以使用`TcpSocketClient`类来创建一个客户端实例,并进行消息的发送和接收:
```java
public class Main {
public static void main(String[] args) {
TcpSocketClient client = new TcpSocketClient("localhost", 1234);
// 发送消息
client.sendMessage("Hello, server!");
// 持续监听消息
while (true) {
// 读取用户输入
Scanner scanner = new Scanner(System.in);
System.out.print("请输入消息: ");
String message = scanner.nextLine();
// 发送消息
client.sendMessage(message);
// 输入"exit"退出循环
if (message.equalsIgnoreCase("exit")) {
break;
}
}
// 关闭连接
client.close();
}
}
```
以上代码创建了一个TCP Socket客户端,连接到指定的主机和端口。它会在一个单独的线程中监听服务器发送的消息,并在控制台上打印出来。你可以使用`sendMessage()`方法发送消息给服务器。在示例中,我们使用了一个简单的循环来持续发送消息,直到输入"exit"退出循环。
请根据你的实际需求修改代码,并处理可能出现的异常情况。