发表于 2018-2-5 17:01

申请会员ID:用一句话描述

1. 申 请 I D:用一句话描述

2. 个人邮箱:764010928@qq.com

3. 原创技术文章:



### 说明

我是一名Android开发,因为工作上需要远程调试不同的Android盒子,盒子的IP地址又经常变更,所以开发了一款可以扫码局域网内可以远程调试的设备,能够进行连接断开的软件,连接之后就可以通过命令行使用各种Android ADB命令了。



### 实现原理

1. 通过循环ping 局域网的IP得到所有在线的设备ip,方法具体实现如下:
```java
    public static void startSeach(final OnSeachListener listener, final String port) {

      count = 0;

      listeners = listener;

      for (int i = 1; i <= 255; i++) {

            final int finalI = i;

            executorService.execute(new Runnable() {

                @Override

                public void run() {

                  String ret = execCMD("ping 192.168." + port + "." + finalI + " -w 100 -n 1");

                  if (ret.indexOf("来自") >= 0 && isHostConnectable("192.168.80." + finalI, 5555)) {

                        Platform.runLater(new Runnable() {

                            @Override

                            public void run() {

                              listener.onSeach("192.168.80." + finalI);

                            }

                        });

                  }

                  countUp();

                }

            });

      }

      executorService.execute(new Runnable() {

            @Override

            public void run() {

                while (true) {

                  if (count >= 255) {

                        Platform.runLater(new Runnable() {

                            @Override

                            public void run() {

                              listener.onEnd();

                            }

                        });

                        break;

                  }

                  try {

                        Thread.sleep(500);

                  } catch (Exception e) {

                        e.printStackTrace();

                  }

                }

            }

      });
    }
```

2. 通过循环判断每个在线设备的IP的端口5555 是否开放来判断是否可以ADB远程调试,判断方法如下:
```java
    public static boolean isHostConnectable(String host, int port) {

      Socket socket = new Socket();

      try {

            socket.setSoTimeout(100);

            socket.connect(new InetSocketAddress(host, port));

      } catch (Exception e) {

            return false;

      } finally {

            try {

                socket.close();

            } catch (IOException e) {

                e.printStackTrace();

            }

      }

      return true;

    }
```

3. 如设备的5555端口是打开状态,那么就可以执行ADB连接,或者断开。




差不多就这样,不知道为何程序截图一直上传不上来,程序 源码和截图上传到百度云了:
https://pan.baidu.com/s/1pMbdFwZ

Hmily 发表于 2018-2-6 14:53

抱歉,未能达到申请要求,申请不通过,可以关注论坛官方微信(吾爱破解论坛),等待开放注册通知。

ps:过程太简单了,不足以达到申请要求,可以跟帖更多技术内容申请。
页: [1]
查看完整版本: 申请会员ID:用一句话描述