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<String, Socket> mTcpPool = new ArrayMap<>();
|
private final ArrayMap<String, DatagramSocket> 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);
|
}
|
|
}
|