From 2a01ef5e49422cca49bc7476fc1b8be8c8556561 Mon Sep 17 00:00:00 2001
From: hxb <hxb@hdlchina.com.cn>
Date: 星期四, 08 九月 2022 10:46:57 +0800
Subject: [PATCH] 最新sdk java版本

---
 HDLSDK/HDLLinkLocalSdk/src/main/java/com/hdl/sdk/link/socket/SocketPool.java |   29 ++++++++++++++++-------------
 1 files changed, 16 insertions(+), 13 deletions(-)

diff --git a/HDLSDK/hdl-socket/src/main/java/com/hdl/sdk/socket/SocketPool.java b/HDLSDK/HDLLinkLocalSdk/src/main/java/com/hdl/sdk/link/socket/SocketPool.java
similarity index 64%
rename from HDLSDK/hdl-socket/src/main/java/com/hdl/sdk/socket/SocketPool.java
rename to HDLSDK/HDLLinkLocalSdk/src/main/java/com/hdl/sdk/link/socket/SocketPool.java
index 41e2763..79e11f6 100644
--- a/HDLSDK/hdl-socket/src/main/java/com/hdl/sdk/socket/SocketPool.java
+++ b/HDLSDK/HDLLinkLocalSdk/src/main/java/com/hdl/sdk/link/socket/SocketPool.java
@@ -1,6 +1,6 @@
-package com.hdl.sdk.socket;
+package com.hdl.sdk.link.socket;
 
-import com.hdl.sdk.socket.client.IClient;
+import com.hdl.sdk.link.socket.client.IClient;
 
 import java.net.DatagramSocket;
 import java.net.InetSocketAddress;
@@ -21,10 +21,13 @@
         mUdpClientPool = new ConcurrentHashMap<>();
     }
 
-    private static final SocketPool instance = new SocketPool();
+
+    private static class SingletonInstance {
+        private static final SocketPool INSTANCE = new SocketPool();
+    }
 
     public static SocketPool getInstance() {
-        return instance;
+        return SingletonInstance.INSTANCE;
     }
 
     public void clear() {
@@ -33,19 +36,19 @@
     }
 
     public synchronized DatagramSocket getUdpSocket(InetSocketAddress address) throws SocketException {
-        DatagramSocket socket;
-        final String key = address.toString();
+        DatagramSocket socket = null;
+        final String key = address.getPort() + "";
         if (mUdpClientPool.containsKey(key)) {
             socket = mUdpClientPool.get(key);
-            if (socket != null && !socket.isClosed()) {
-                return socket;
-            } else {
-                socket = new DatagramSocket(address);
+            if (socket != null && socket.isClosed()) {
+                mUdpClientPool.remove(key);
+                socket = null;
             }
-        } else {
-            socket = new DatagramSocket(address);
         }
-        mUdpClientPool.put(address.toString(), socket);
+        if (socket == null) {
+            socket = new DatagramSocket(address);
+            mUdpClientPool.put(key, socket);
+        }
         return socket;
     }
 }

--
Gitblit v1.8.0