springboot客户端如何监听服务端的socket
时间: 2023-08-06 14:08:23 浏览: 50
在Spring Boot中,您可以使用Java的标准Socket类来监听服务端的Socket。下面是一个简单的示例代码:
```java
@Service
public class SocketClientService {
@Value("${server.host}")
private String host;
@Value("${server.port}")
private int port;
private Socket socket;
private BufferedReader reader;
private PrintWriter writer;
@PostConstruct
public void init() throws IOException {
socket = new Socket(host, port);
reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
writer = new PrintWriter(socket.getOutputStream(), true);
new Thread(() -> {
try {
String message;
while ((message = reader.readLine()) != null) {
System.out.println("Received message from server: " + message);
}
} catch (IOException e) {
e.printStackTrace();
}
}).start();
}
public void sendMessage(String message) {
writer.println(message);
}
@PreDestroy
public void destroy() throws IOException {
writer.close();
reader.close();
socket.close();
}
}
```
在上述代码中,我们使用了`@Value`注解来从application.properties文件中获取服务器的主机名和端口号。在`init()`方法中,我们创建了一个Socket连接,并使用BufferedReader和PrintWriter来读写Socket的输入输出流。然后我们开启一个新的线程来监听服务端发送的消息,并在控制台输出。
如果你想要在客户端发送消息给服务端,你可以使用`sendMessage()`方法。最后,我们在`destroy()`方法中关闭所有的资源,以防止内存泄漏。