From 27a0768b0e0a042911b7f299fcc599d2da4e7fc0 Mon Sep 17 00:00:00 2001 From: hxb <hxb@hdlchina.com.cn> Date: 星期一, 13 十二月 2021 10:36:52 +0800 Subject: [PATCH] 更改了udp测试后版本 --- HDLSDK/hdl-socket/src/main/java/com/hdl/sdk/socket/udp/UdpSocketBoot.java | 56 +++++++++++++++++++++++++++++++++++++++++++------------- 1 files changed, 43 insertions(+), 13 deletions(-) diff --git a/HDLSDK/hdl-socket/src/main/java/com/hdl/sdk/socket/udp/UdpSocketBoot.java b/HDLSDK/hdl-socket/src/main/java/com/hdl/sdk/socket/udp/UdpSocketBoot.java index 5e87c6b..44bbf86 100644 --- a/HDLSDK/hdl-socket/src/main/java/com/hdl/sdk/socket/udp/UdpSocketBoot.java +++ b/HDLSDK/hdl-socket/src/main/java/com/hdl/sdk/socket/udp/UdpSocketBoot.java @@ -13,7 +13,9 @@ import com.hdl.sdk.socket.listener.SendListener; import java.net.ConnectException; +import java.net.InetAddress; import java.net.InetSocketAddress; +import java.net.SocketAddress; import java.util.concurrent.BlockingQueue; import java.util.concurrent.ExecutorService; import java.util.concurrent.LinkedBlockingDeque; @@ -33,6 +35,8 @@ private final AtomicInteger resendCount = new AtomicInteger(0); + private ExecutorService receiveThread; + private final ArrayMap<String, SendListener> sendMap = new ArrayMap<>(); public UdpSocketBoot(IUdpClient client) { @@ -44,38 +48,63 @@ * @throws Exception 鍙兘绔彛鍐茬獊 */ public void bind() throws Exception { - if (null != client) { - client.bind(); - } + client.bind(); + initReceiveThread(); } /** + * 鍒濆鍖栨帴鏀剁嚎绋� + */ + private void initReceiveThread() { + if(null!=receiveThread){ + return; + } + receiveThread = ThreadToolUtils.getInstance().newFixedThreadPool(1); + receiveThread.execute(new Runnable() { + @Override + public void run() { + while (true) { + try { + client.onHandleResponse(); + } catch (Exception e) { + LogUtils.i("鎺ユ敹绾跨▼寮傚父锛�"+e.getMessage()); + } + } + } + }); + } + + + /** * 鍙戦�佹暟鎹� - * @param inetSocketAddress 鐩殑鐨処P鍦板潃 + * @param ipAddress 鐩殑鐨処P鍦板潃 + * @param port 绔彛 * @param msg 鍙戦�佹暟鎹� * @param listener 鍙戦�佸洖璋� */ - public void sendMsg(InetSocketAddress inetSocketAddress,byte[] msg, SendListener listener) { - sendMsg(inetSocketAddress, msg, true, listener); + public void sendMsg(String ipAddress,int port,byte[] msg, SendListener listener) { + sendMsg(ipAddress,port, msg, true, listener); } /** * 鍙戦�佹暟鎹� - * @param inetSocketAddress 鐩殑鐨処P鍦板潃 + * @param ipAddress 鐩殑鐨処P鍦板潃 + * @param port 绔彛 * @param msg 鍙戦�佹暟鎹� */ - public void sendMsg(InetSocketAddress inetSocketAddress,byte[] msg) { - sendMsg(inetSocketAddress, msg, true, null); + public void sendMsg(String ipAddress,int port,byte[] msg) { + sendMsg(ipAddress,port, msg, true, null); } /** * 鍙戦�佹暟鎹� - * @param inetSocketAddress 鐩殑IP鍦板潃 + * @param ipAddress 鐩殑IP鍦板潃 + * @param port 绔彛 * @param msg 鍙戦�佺殑鏁版嵁 * @param isRefreshRetry 鏄惁瑕侀噸鍙� * @param listener 鍙戦�佸洖璋� */ - public void sendMsg(InetSocketAddress inetSocketAddress, byte[] msg, boolean isRefreshRetry, SendListener listener) { + public void sendMsg(String ipAddress,int port, byte[] msg, boolean isRefreshRetry, SendListener listener) { if (isRefreshRetry) { //閲嶇疆杩炴帴娆℃暟 resendCount.set(0); @@ -85,7 +114,7 @@ if (listener != null && !TextUtils.isEmpty(request.getAction())) { sendMap.put(request.getAction(), listener); } - client.sendMsg(inetSocketAddress, msg); + client.sendMsg(ipAddress,port, msg); } catch (Exception e) { LogUtils.i("鍙戦�佸け璐�:" + e.getMessage()); } @@ -96,8 +125,9 @@ */ public synchronized void close() { isOpenRetry.set(false); - sendMap.clear(); + receiveThread.shutdown(); + receiveThread=null; client.close(); } } -- Gitblit v1.8.0