JLChen
2021-12-13 e7b8a808c2274e9c4329092bb752c7ea5cb035fc
HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/socket/HdlSocketHelper.java
@@ -29,7 +29,14 @@
    private SocketBoot boot;
    private UdpSocketBoot udpSocketBoot;
    private InetSocketAddress inetSocketAddress;
    /**
     * 发送的目标IP
     */
    private String ipAddress;
    /**
     * 发送的目标地址
     */
    private int port;
    private final LinkRequest linkRequest;
    private final EventListener eventListener;
@@ -71,11 +78,12 @@
    }
    private HdlSocketHelper(Long sendAwaitTime, int maxRetry, UdpSocketBoot udpSocketBoot,
                            InetSocketAddress inetSocketAddress, LinkRequest linkRequest, String observeTopic, HdlSocketListener listener) {
                            String ipAddress,int port , LinkRequest linkRequest, String observeTopic, HdlSocketListener listener) {
        this.sendAwaitTime = sendAwaitTime;
        this.maxRetry = maxRetry;
        this.udpSocketBoot = udpSocketBoot;
        this.inetSocketAddress = inetSocketAddress;
        this.ipAddress = ipAddress;
        this.port = port;
        this.linkRequest = linkRequest;
        this.listener = listener;
        this.sendNumber = new AtomicInteger(0);
@@ -120,34 +128,44 @@
     * Udp的发送方法
     *
     * @param udpSocketBoot     Udp当前对接
     * @param inetSocketAddress 发送的目标地址
     * @param ipAddress 发送的目标IP地址
     * @param port 目的端口
     * @param linkRequest       发送的数据
     * @param observeTopic      发送的主题
     * @param retry 重发数次
     * @param listener          回调
     */
    public static void send(UdpSocketBoot udpSocketBoot, InetSocketAddress inetSocketAddress, LinkRequest linkRequest, String observeTopic, HdlSocketListener listener) {
    public static void sendUdp(UdpSocketBoot udpSocketBoot, String  ipAddress ,int port, LinkRequest linkRequest, String observeTopic, int retry,HdlSocketListener listener) {
        if (TextUtils.isEmpty(observeTopic)) {
            observeTopic = linkRequest.getTopic() + "_reply";
        }
        HdlSocketHelper socketHelper = new HdlSocketHelper(DEF_SEND_TIMEOUT, DEF_SEND_ONE, udpSocketBoot, inetSocketAddress, linkRequest, observeTopic, listener);
        HdlSocketHelper socketHelper = new HdlSocketHelper(DEF_SEND_TIMEOUT, retry, udpSocketBoot, ipAddress,port, linkRequest, observeTopic, listener);
        socketHelper.send();
    }
    /**
     * Udp发送的方法
     * Udp的发送方法
     *
     * @param udpSocketBoot     当前Udp对象
     * @param inetSocketAddress 发送的目标地址
     * @param linkRequest       发送的对象
     * @param udpSocketBoot     Udp当前对接
     * @param ipAddress 发送的目标IP地址
     * @param port 目的端口
     * @param linkRequest       发送的数据
     * @param listener          回调
     */
    public static void send(UdpSocketBoot udpSocketBoot, InetSocketAddress inetSocketAddress, LinkRequest linkRequest, HdlSocketListener listener) {
        String observeTopic = null;
        if (TextUtils.isEmpty(observeTopic)) {
            observeTopic = linkRequest.getTopic() + "_reply";
        }
        HdlSocketHelper socketHelper = new HdlSocketHelper(DEF_SEND_TIMEOUT, DEF_SEND_ONE, udpSocketBoot, inetSocketAddress, linkRequest, observeTopic, listener);
        socketHelper.send();
    public static void sendUdp(UdpSocketBoot udpSocketBoot, String  ipAddress ,int port, LinkRequest linkRequest, HdlSocketListener listener) {
        sendUdp(udpSocketBoot,ipAddress,port,linkRequest,null,DEF_MAX_RETRY,listener);
    }
    /**
     * Udp的发送方法
     *
     * @param udpSocketBoot     Udp当前对接
     * @param ipAddress 发送的目标IP地址
     * @param port 目的端口
     * @param linkRequest       发送的数据
     */
    public static void sendUdpOne(UdpSocketBoot udpSocketBoot, String  ipAddress ,int port, LinkRequest linkRequest) {
        sendUdp(udpSocketBoot, ipAddress, port, linkRequest, null, DEF_SEND_ONE, null);
    }
    private void send() {
@@ -166,7 +184,7 @@
                            }
                            //如果是udp
                            if (null != udpSocketBoot) {
                                udpSocketBoot.sendMsg(inetSocketAddress, linkRequest.getSendBytes());
                                udpSocketBoot.sendMsg(ipAddress,port, linkRequest.getSendBytes());
                            }
                        }
                    } catch (Exception e) {
@@ -179,7 +197,9 @@
                    }
                }
            }
        }, sendAwaitTime, sendAwaitTime, TimeUnit.MILLISECONDS);
        }, 0, sendAwaitTime, TimeUnit.MILLISECONDS);
        //initialdelay - 首次执行的延迟时间 0
        //delay - 一次执行终止和下一次执行开始之间的延迟
    }
    /**