// NetworkBase.java - 网络通信基类 package home; import java.io.IOException; import java.net.*; import java.util.concurrent.atomic.AtomicBoolean; import java.util.function.Consumer; public abstract class NetworkBase { protected AtomicBoolean isRunning = new AtomicBoolean(false); protected String host; protected int port; protected NetworkDataListener dataListener; // 新增:响应消费者,用于处理特定的响应数据 protected Consumer responseConsumer; public interface NetworkDataListener { void onDataReceived(byte[] data, String fromAddress); void onStatusChanged(String status, boolean isConnected); void onError(String errorMessage); } public void setDataListener(NetworkDataListener listener) { this.dataListener = listener; } /** * 设置响应消费者 - 新增方法 * 用于处理特定的响应数据,比如配置读取的响应 */ public void setResponseConsumer(Consumer consumer) { this.responseConsumer = consumer; } /** * 获取响应消费者 - 新增方法 */ public Consumer getResponseConsumer() { return responseConsumer; } /** * 通知响应数据 - 新增方法 * 如果有设置响应消费者,将数据传递给消费者 */ protected void notifyResponseData(byte[] data) { if (responseConsumer != null) { responseConsumer.accept(data); } } /** * 处理接收到的数据 - 新增方法 * 同时通知数据监听器和响应消费者 */ protected void handleReceivedData(byte[] data, String fromAddress) { // 通知数据监听器 notifyData(data, fromAddress); // 通知响应消费者 notifyResponseData(data); } public abstract boolean start() throws Exception; public abstract void stop(); public abstract boolean sendData(String data) throws Exception; public abstract boolean isConnected(); protected void notifyStatus(String status, boolean connected) { if (dataListener != null) { dataListener.onStatusChanged(status, connected); } } protected void notifyError(String error) { if (dataListener != null) { dataListener.onError(error); } } protected void notifyData(byte[] data, String fromAddress) { if (dataListener != null) { dataListener.onDataReceived(data, fromAddress); } } /** * 获取数据监听器 */ public NetworkDataListener getDataListener() { return dataListener; } }