From 99bc815e07e39354f51421b77f4012ffd35594d8 Mon Sep 17 00:00:00 2001
From: wjc <1243177876@qq.com>
Date: 星期三, 28 六月 2023 18:03:00 +0800
Subject: [PATCH] 2023年06月28日18:02:58
---
HDLLinkLocalSdk/src/main/java/com/hdl/sdk/link/socket/SocketPool.java | 54 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 54 insertions(+), 0 deletions(-)
diff --git a/HDLLinkLocalSdk/src/main/java/com/hdl/sdk/link/socket/SocketPool.java b/HDLLinkLocalSdk/src/main/java/com/hdl/sdk/link/socket/SocketPool.java
new file mode 100644
index 0000000..79e11f6
--- /dev/null
+++ b/HDLLinkLocalSdk/src/main/java/com/hdl/sdk/link/socket/SocketPool.java
@@ -0,0 +1,54 @@
+package com.hdl.sdk.link.socket;
+
+import com.hdl.sdk.link.socket.client.IClient;
+
+import java.net.DatagramSocket;
+import java.net.InetSocketAddress;
+import java.net.SocketException;
+import java.util.concurrent.ConcurrentHashMap;
+
+/**
+ * Created by Tong on 2021/10/19.
+ * 璁″垝鍙傝�僩eneric-pool銆丆ommons Pool杩涜瀹屽杽
+ */
+public class SocketPool {
+
+ private final ConcurrentHashMap<String, IClient> mPool;
+ private final ConcurrentHashMap<String, DatagramSocket> mUdpClientPool;
+
+ private SocketPool() {
+ mPool = new ConcurrentHashMap<>();
+ mUdpClientPool = new ConcurrentHashMap<>();
+ }
+
+
+ private static class SingletonInstance {
+ private static final SocketPool INSTANCE = new SocketPool();
+ }
+
+ public static SocketPool getInstance() {
+ return SingletonInstance.INSTANCE;
+ }
+
+ public void clear() {
+ mPool.clear();
+ mUdpClientPool.clear();
+ }
+
+ public synchronized DatagramSocket getUdpSocket(InetSocketAddress address) throws SocketException {
+ DatagramSocket socket = null;
+ final String key = address.getPort() + "";
+ if (mUdpClientPool.containsKey(key)) {
+ socket = mUdpClientPool.get(key);
+ if (socket != null && socket.isClosed()) {
+ mUdpClientPool.remove(key);
+ socket = null;
+ }
+ }
+ if (socket == null) {
+ socket = new DatagramSocket(address);
+ mUdpClientPool.put(key, socket);
+ }
+ return socket;
+ }
+}
--
Gitblit v1.8.0