From 8adb5e06a5fcfad9a634944c0d65fc70c5c2527f Mon Sep 17 00:00:00 2001 From: Tong <1025782220@qq.com> Date: 星期二, 19 四月 2022 10:12:57 +0800 Subject: [PATCH] 去掉依赖库 --- HDLSDK/hdl-socket/src/main/java/com/hdl/sdk/socket/udp/UdpSocketBoot.java | 69 ++++++++++++++++++++++------------ 1 files changed, 45 insertions(+), 24 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..2d37ac5 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 @@ -2,23 +2,15 @@ import android.text.TextUtils; -import androidx.collection.ArrayMap; - import com.hdl.sdk.common.utils.LogUtils; import com.hdl.sdk.common.utils.ThreadToolUtils; import com.hdl.sdk.socket.SocketRequest; -import com.hdl.sdk.socket.annotation.ConnectStatus; -import com.hdl.sdk.socket.client.IClient; import com.hdl.sdk.socket.client.IUdpClient; import com.hdl.sdk.socket.listener.SendListener; -import java.net.ConnectException; -import java.net.InetSocketAddress; -import java.util.concurrent.BlockingQueue; +import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.ConcurrentMap; import java.util.concurrent.ExecutorService; -import java.util.concurrent.LinkedBlockingDeque; -import java.util.concurrent.ScheduledExecutorService; -import java.util.concurrent.TimeUnit; import java.util.concurrent.atomic.AtomicBoolean; import java.util.concurrent.atomic.AtomicInteger; @@ -33,7 +25,9 @@ private final AtomicInteger resendCount = new AtomicInteger(0); - private final ArrayMap<String, SendListener> sendMap = new ArrayMap<>(); + private ExecutorService receiveThread; + + private final ConcurrentMap<String, SendListener> sendMap = new ConcurrentHashMap<>(); public UdpSocketBoot(IUdpClient client) { this.client = client; @@ -44,38 +38,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 +104,8 @@ if (listener != null && !TextUtils.isEmpty(request.getAction())) { sendMap.put(request.getAction(), listener); } - client.sendMsg(inetSocketAddress, msg); + LogUtils.i("鍙戦�佺洰鏍嘔P鍜岀鍙�", ipAddress + ":" + port); + client.sendMsg(ipAddress, port, msg); } catch (Exception e) { LogUtils.i("鍙戦�佸け璐�:" + e.getMessage()); } @@ -96,8 +116,9 @@ */ public synchronized void close() { isOpenRetry.set(false); - sendMap.clear(); + receiveThread.shutdown(); + receiveThread=null; client.close(); } } -- Gitblit v1.8.0