wjc
2025-04-09 87cd5df70918e6ba1af849c5f026d3719bfdb1ac
sdk/src/main/java/com/hdl/sdk/link/socket/client/UdpClient.java
@@ -67,8 +67,9 @@
    /**
     * 初始化参数
     * @param ipAddress 本地监听端口
     * @param port 本地监听端口
     *
     * @param ipAddress     本地监听端口
     * @param port          本地监听端口
     * @param socketOptions
     */
    public UdpClient(String ipAddress, int port, UdpSocketOptions socketOptions) {
@@ -77,13 +78,14 @@
        this.socketOptions = socketOptions;
        byte[] receiveByte = new byte[BUFFER];
        receivePacket = new DatagramPacket(receiveByte, receiveByte.length);
        this.lock= socketOptions.getWifiManager().createMulticastLock("UDPwifi");
        this.lock = socketOptions.getWifiManager().createMulticastLock("UDPwifi");
    }
    /**
     * 初始化参数
     *
     * @param ipAddress 本地监听IP地址
     * @param port 本地监听端口
     * @param port      本地监听端口
     * @param options
     * @return
     */
@@ -93,7 +95,8 @@
    /**
     * 初始化参数
     * @param port 本地监听端口
     *
     * @param port    本地监听端口
     * @param options
     * @return
     */
@@ -111,12 +114,12 @@
            lock.acquire();
            if (TextUtils.isEmpty(ipAddress)) {
                mSocket = SocketPool.getInstance().getUdpSocket(new InetSocketAddress( port));
            }
            else{
                mSocket = SocketPool.getInstance().getUdpSocket(new InetSocketAddress(port));
            } else {
                mSocket = SocketPool.getInstance().getUdpSocket(new InetSocketAddress(Inet4Address.getByName(ipAddress), port));
            }
            mSocket.joinGroup(InetAddress.getByName(socketOptions.getGroupAddress()));
            //去掉 组地址(光伏app不同网段不允许) 2025年04月01日15:43:58
//            mSocket.joinGroup(InetAddress.getByName(socketOptions.getGroupAddress()));
            mSocket.setSoTimeout(socketOptions.getSoTimeOut());
            mSocket.setBroadcast(true);
//            mSocket.setReuseAddress(true);
@@ -170,13 +173,12 @@
            byte[] data = new byte[receivePacket.getLength()];
            System.arraycopy(receivePacket.getData(), 0, data, 0, data.length);
            if(mSocket.getLocalPort()== HDLBusProConnect.UDP_PORT){
            if (mSocket.getLocalPort() == HDLBusProConnect.UDP_PORT) {
                //Bus协议,本身没有主题,默认用上报的主题,方便bus解析器能订阅收到数据
                LinkPacket linkPacket=new LinkPacket(String.format(TopicConstant.NATIVE_BUSPRO_UP, receivePacket.getAddress().getHostAddress()), data);
                LinkPacket linkPacket = new LinkPacket(String.format(TopicConstant.NATIVE_BUSPRO_UP, receivePacket.getAddress().getHostAddress()), data);
                linkPacket.setNativeType(NativeType.BusPro);
                QueueUtils.getInstance().add(linkPacket);
            }
            else {
            } else {
                //link协议
                socketOptions.getHandleMessage().read(new Packet(data));
            }
@@ -188,7 +190,7 @@
    @Override
    public void sendMsg(String ipAddress,int port, byte[] msg) throws Exception {
    public void sendMsg(String ipAddress, int port, byte[] msg) throws Exception {
        if (msg == null) {
            return;
        }
@@ -196,10 +198,10 @@
//        if (mSocket != null) {
//            mSocket.send(sendPacket);
//        } else {
            DatagramSocket datagramSocket = new DatagramSocket();
            datagramSocket.setBroadcast(true);
            datagramSocket.send(sendPacket);
            datagramSocket.close();
        DatagramSocket datagramSocket = new DatagramSocket();
        datagramSocket.setBroadcast(true);
        datagramSocket.send(sendPacket);
        datagramSocket.close();
//        sendPacket = new DatagramPacket(msg, msg.length, InetAddress.getByName(socketOptions.getGroupAddress()), port);
//        MulticastSocket multicastSocket = new MulticastSocket();
//        multicastSocket.setReuseAddress(true);