From b1569b789eef12cf5d4252620ca7e7d2d9c8b93a Mon Sep 17 00:00:00 2001
From: panlili2024 <14743743+panlili2024@user.noreply.gitee.com>
Date: 星期四, 14 十一月 2024 14:26:03 +0800
Subject: [PATCH] sdk重连优化

---
 HDLSDK/hdl-socket/src/main/java/com/hdl/sdk/socket/client/UdpClient.java |   27 ++++++++++++++++-----------
 1 files changed, 16 insertions(+), 11 deletions(-)

diff --git a/HDLSDK/hdl-socket/src/main/java/com/hdl/sdk/socket/client/UdpClient.java b/HDLSDK/hdl-socket/src/main/java/com/hdl/sdk/socket/client/UdpClient.java
index c2a75a4..8a78384 100644
--- a/HDLSDK/hdl-socket/src/main/java/com/hdl/sdk/socket/client/UdpClient.java
+++ b/HDLSDK/hdl-socket/src/main/java/com/hdl/sdk/socket/client/UdpClient.java
@@ -17,6 +17,7 @@
 import java.net.DatagramSocket;
 import java.net.InetAddress;
 import java.net.InetSocketAddress;
+import java.net.SocketAddress;
 import java.util.concurrent.atomic.AtomicBoolean;
 
 
@@ -86,7 +87,7 @@
      * @return
      */
     public static UdpSocketBoot init(int port, UdpSocketOptions options) {
-        return init(null, port, options);
+        return init("0.0.0.0", port, options);
     }
 
 
@@ -98,10 +99,12 @@
                 return;
             }
             if (TextUtils.isEmpty(ipAddress)) {
-                mSocket = SocketPool.getInstance().getUdpSocket1(new InetSocketAddress(port));
+                mSocket = SocketPool.getInstance().getUdpSocket(new InetSocketAddress(port));
+            }else {
+                mSocket = SocketPool.getInstance().getUdpSocket(new InetSocketAddress(ipAddress,port));
             }
             mSocket.setBroadcast(true);
-            mSocket.setReuseAddress(true);
+//            mSocket.setReuseAddress(true);
 
         } catch (Exception e) {
             LogUtils.e("鍒濆鍖朣ocket 澶辫触锛�" + e.getMessage());
@@ -122,15 +125,16 @@
 
     @Override
     public UdpSocketOptions getOptions() {
-        return null;
+        return this.socketOptions;
     }
 
+    @Override
     public void onHandleResponse() throws Exception {
         if (mSocket == null) {
             return;
         }
         try {
-           mSocket.receive(receivePacket);
+            mSocket.receive(receivePacket);
         } catch (IOException e) {
             e.printStackTrace();
         }
@@ -139,33 +143,34 @@
         }
         //鎺掗櫎鑷繁鍙戝嚭鍘荤殑
         try {
-            if (IpUtils.isLocalIpAddress( receivePacket.getAddress().getHostAddress()))
+            if (IpUtils.isLocalIpAddress(receivePacket.getAddress().getHostAddress()))
                 return;
         } catch (Exception ignored) {
 
         }
 
         try {
-            LogUtils.i( "鎺ユ敹鍒癠dp鏁版嵁鍖咃紝缃戠粶鍦板潃锛�" + receivePacket.getAddress().getHostAddress() + ":" + receivePacket.getPort());
+            LogUtils.i("鎺ユ敹鍒癠dp鏁版嵁鍖咃紝缃戠粶鍦板潃锛�" + receivePacket.getAddress().getHostAddress() + ":" + receivePacket.getPort());
 
             IHandleMessage handleMessage = getOptions().getHandleMessage();
             if (handleMessage != null) {
                 byte[] data = new byte[receivePacket.getLength()];
                 System.arraycopy(receivePacket.getData(), 0, data, 0, data.length);
-                handleMessage.read(data);
+                handleMessage.read(data,receivePacket.getAddress().getHostAddress());
             }
 
-        }catch (Exception e){
+        } catch (Exception e) {
 
         }
     }
 
+
     @Override
-    public void sendMsg(InetSocketAddress inetSocketAddress, byte[] msg) throws Exception {
+    public void sendMsg(String ipAddress,int port, byte[] msg) throws Exception {
         if (msg == null) {
             return;
         }
-        final DatagramPacket sendPacket = new DatagramPacket(msg, msg.length, inetSocketAddress);
+        final DatagramPacket sendPacket = new DatagramPacket(msg, msg.length, InetAddress.getByName(ipAddress), port);
         mSocket.send(sendPacket);
     }
 }

--
Gitblit v1.8.0