File was renamed from HDLSDK/hdl-socket/src/main/java/com/hdl/sdk/socket/SocketPool.java |
| | |
| | | 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;
|
| | |
| | | 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() {
|
| | |
| | | }
|
| | |
|
| | | 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;
|
| | | }
|
| | | }
|