package com.hdl.sdk.socket.client; import android.net.Uri; import androidx.collection.ArrayMap; import java.net.DatagramSocket; import java.net.Socket; import java.net.SocketException; /** * Created by Tong on 2021/10/8. */ public class ClientPool { private final ArrayMap mTcpPool = new ArrayMap<>(); private final ArrayMap mUdpPool = new ArrayMap<>(); private ClientPool() { } private static class SingletonInstance { private static final ClientPool INSTANCE = new ClientPool(); } public static ClientPool getInstance() { return SingletonInstance.INSTANCE; } public Socket getTcpSocket(String ip, int port) { final StringBuilder key = new StringBuilder(); key.append(ip).append(":").append(port); if (mTcpPool.containsKey(key)) { Socket socket = mTcpPool.get(key); if (socket != null && !socket.isClosed()) { return socket; } } return new Socket(); } public DatagramSocket getUdpSocket(String ip, int port) throws SocketException { final StringBuilder key = new StringBuilder(); key.append(ip).append(":").append(port); if (mUdpPool.containsKey(key)) { DatagramSocket socket = mUdpPool.get(key); if (socket != null && !socket.isClosed()) { return socket; } } return new DatagramSocket(port); } }