From 93f13e7b2e046c6d86d10e7abc2ecaa4c4adabc3 Mon Sep 17 00:00:00 2001
From: hxb <hxb@hdlchina.com.cn>
Date: 星期二, 21 十二月 2021 11:47:38 +0800
Subject: [PATCH] 完善tcp
---
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