From 64388cd6aa7a3c6631af50bc5c0d1b61a35da844 Mon Sep 17 00:00:00 2001 From: donghongyu Date: Wed, 27 Jul 2022 12:48:11 +0800 Subject: [PATCH] =?UTF-8?q?[Change]=20=E5=A2=9E=E5=8A=A0=E5=B0=8F=E5=B7=B4?= =?UTF-8?q?=E8=BD=A68=E7=BD=91=E6=AE=B5=E7=9A=84=E5=85=BC=E5=AE=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- gradle.properties | 24 ++--- .../com/mogo/telematic/NSDNettyManager.java | 101 ++++++++++-------- 2 files changed, 70 insertions(+), 55 deletions(-) diff --git a/gradle.properties b/gradle.properties index fcb37fa..658dffe 100644 --- a/gradle.properties +++ b/gradle.properties @@ -36,26 +36,26 @@ PASSWORD=xintai2018 RELEASE=true # AI CLOUD 云平台 # 工具类 -MOGO_UTILS_VERSION=1.4.3.7 +MOGO_UTILS_VERSION=1.4.3.8 # 网络请求 -MOGO_NETWORK_VERSION=1.4.3.7 +MOGO_NETWORK_VERSION=1.4.3.8 # 网络DNS -MOGO_HTTPDNS_VERSION=1.4.3.7 +MOGO_HTTPDNS_VERSION=1.4.3.8 # 鉴权 -MOGO_PASSPORT_VERSION=1.4.3.7 +MOGO_PASSPORT_VERSION=1.4.3.8 # 常链接 -MOGO_SOCKET_VERSION=1.4.3.7 +MOGO_SOCKET_VERSION=1.4.3.8 # 数据采集 -MOGO_REALTIME_VERSION=1.4.3.7 +MOGO_REALTIME_VERSION=1.4.3.8 # 探路,道路事件发布,获取 -MOGO_TANLU_VERSION=1.4.3.7 +MOGO_TANLU_VERSION=1.4.3.8 # 直播推流 -MOGO_LIVE_VERSION=1.4.3.7 +MOGO_LIVE_VERSION=1.4.3.8 # 直播拉流 -MOGO_TRAFFICLIVE_VERSION=1.4.3.7 +MOGO_TRAFFICLIVE_VERSION=1.4.3.8 # 定位服务 -MOGO_LOCATION_VERSION=1.4.3.7 +MOGO_LOCATION_VERSION=1.4.3.8 # 远程通讯模块 -MOGO_TELEMATIC_VERSION=1.4.3.7 +MOGO_TELEMATIC_VERSION=1.4.3.8 # v2x -MOGO_V2X_VERSION=1.4.3.7 +MOGO_V2X_VERSION=1.4.3.8 diff --git a/libraries/mogo-telematic/src/main/java/com/mogo/telematic/NSDNettyManager.java b/libraries/mogo-telematic/src/main/java/com/mogo/telematic/NSDNettyManager.java index 225b00c..204c3bb 100644 --- a/libraries/mogo-telematic/src/main/java/com/mogo/telematic/NSDNettyManager.java +++ b/libraries/mogo-telematic/src/main/java/com/mogo/telematic/NSDNettyManager.java @@ -41,6 +41,10 @@ public class NSDNettyManager { private long network_ip = 0; private long network_start = 0; private long network_end = 0; + private String currentIp1 = "192.168.1.0"; + private String currentIp8 = "192.168.8.0"; + private String currentIp = currentIp1; + private NSDNettyManager() { } @@ -233,53 +237,64 @@ public class NSDNettyManager { } // BUS 由于采用的虚拟机,不在同一个局域网内,所以无法使用上面的方案 else { - // 启动发现司机屏幕任务 - mDiscoveryTask = new DiscoveryDriverTask(); - network_ip = NetInfo.getUnsignedLongFromIp("192.168.1.0"); - - int cidr = 24; - // Detected IP - int shift = (32 - cidr); - if (cidr < 31) { - network_start = (network_ip >> shift << shift) + 1; - network_end = (network_start | ((1 << shift) - 1)) - 1; - } else { - network_start = (network_ip >> shift << shift); - network_end = (network_start | ((1 << shift) - 1)); - } - - mDiscoveryTask.setNetwork(network_ip, network_start, network_end); - mDiscoveryTask.addDiscoveryDriverListener(new DiscoveryDriverListener() { - @Override - public void onSuccess(ArrayList hostList) { - // 这里返回数据代表了有司机端正在运行,这里遍历集合数据进行连接 - if (hostList != null && hostList.size() > 0) { - String hostAddress = ""; - for (HostBean hostBean : hostList) { - if (mNettyTcpClient != null && (mNettyTcpClient.isConnecting() || mNettyTcpClient.getConnectStatus())) { - Logger.d(TAG, "当前乘客屏幕已经连接到了ip:" + hostAddress + ",port为:" + 1088); - return; - } - hostAddress = hostBean.ipAddress; - Logger.d(TAG, "NSD查询到指定服务器信息ip为:" + hostAddress + ",port为:" + 1088); - //获取到指定的地址,进行Netty的连接 - connectNettyServer(hostAddress, 1088, uuid, listener); - } - } else { - Logger.d(TAG, "扫描完成,未找到可连接司机屏幕服务"); - } - } - - @Override - public void onCancel() { - - } - }); - mDiscoveryTask.execute(); + scanDriverServer(uuid, listener); } } + private void scanDriverServer(String uuid, NettyClientListener listener) { + // 启动发现司机屏幕任务 + mDiscoveryTask = new DiscoveryDriverTask(); + network_ip = NetInfo.getUnsignedLongFromIp(currentIp); + + int cidr = 24; + // Detected IP + int shift = (32 - cidr); + if (cidr < 31) { + network_start = (network_ip >> shift << shift) + 1; + network_end = (network_start | ((1 << shift) - 1)) - 1; + } else { + network_start = (network_ip >> shift << shift); + network_end = (network_start | ((1 << shift) - 1)); + } + + mDiscoveryTask.setNetwork(network_ip, network_start, network_end); + mDiscoveryTask.addDiscoveryDriverListener(new DiscoveryDriverListener() { + @Override + public void onSuccess(ArrayList hostList) { + // 这里返回数据代表了有司机端正在运行,这里遍历集合数据进行连接 + if (hostList != null && hostList.size() > 0) { + String hostAddress = ""; + for (HostBean hostBean : hostList) { + if (mNettyTcpClient != null && (mNettyTcpClient.isConnecting() || mNettyTcpClient.getConnectStatus())) { + Logger.d(TAG, "当前乘客屏幕已经连接到了ip:" + hostAddress + ",port为:" + 1088); + return; + } + hostAddress = hostBean.ipAddress; + Logger.d(TAG, "NSD查询到指定服务器信息ip为:" + hostAddress + ",port为:" + 1088); + //获取到指定的地址,进行Netty的连接 + connectNettyServer(hostAddress, 1088, uuid, listener); + } + } else { + Logger.d(TAG, "扫描完成,未找到可连接司机屏幕服务"); + // 这里做1、8网段的切换扫描 + if (currentIp.equals(currentIp1)) { + currentIp = currentIp8; + } else { + currentIp = currentIp1; + } + scanDriverServer(uuid, listener); + } + } + + @Override + public void onCancel() { + + } + }); + mDiscoveryTask.execute(); + } + private void connectNettyServer(String serverAddress, int port, String sign, NettyClientListener listener) { Logger.d(TAG, "connectNettyServer"); if (serverAddress == null || serverAddress.length() == 0) {