Android内核及各种干货开源项目实践与分析Android

IpScanner:Android设备局域网内设备搜索扫描

2016-11-17  本文已影响448人  非墨Zero

GitHub 地址:<a href="https://github.com/FeiMo1988/Scanner">Scanner</a>

Bug反馈地址: dingwei.chen1988@gmail.com

现在的Android设备,可以支持局域网内的投射,控制等各种功能。对于局域网内的设备搜索变的尤为重要。本Scanner的目的就是为了解决这个问题。Scanner会帮你解析出你设备的IP地址及掩码,并通过掩码计算来获取所有的子网IP。然后通过调用者或者自带的判断策略来检测是否是需要连接的设备。看下demo的效果吧:

demo效果

1.传入端口###

Scanner在使用的时候需要传入一个检测端口,非墨用于测试的设备开放的端口是3000,因此在demo中传入的端口参数是3000。如果你要的连的是个Android设备的话,可以考虑传入Adb的端口5555

2.设置扩展扫描线程数量###

Scanner可以通过调用setExpendThreadNumber 方法来设置扩展扫描线程数量。调用者可以根据实际网络情况和设备情况来设置这个参数。

mIpScanner = new IpScanner(3000,this)   
.setExpendThreadNumber(5);

3.设置扫描回调接口###

Scanner 在构造的时候必须指定回调接口。

public IpScanner(int port, ScanCallback callback) { 
mPort = port;
if (callback == null) {      
      throw new IllegalArgumentException("Params callback can't be null!");
}   
mScanCallback = callback;
}

4.设置扫描超时时间###

可以通过设置超时时间避免过长时间的超时等待。

public final IpScanner setTimeOut(long time) {  
 this.mTimeOut = time;   
 return this;
}

5.Scanner printLog###

Scanner在执行的过程中将打印一些过程log,这个可以通过调用setScannerLogger方法来指定,传入的参数是一个ScannerLogger接口类型:

public static interface ScannerLogger {   
public void onScanLogPrint(String msg);
}

6.实验效果###

测试之后,网络佳的情况下可以控制在2s以内,而网络差的情况下可以控制在10s以内。
还有其他的功能和作用,等各位去发掘,如果有建议或者bug请发到作者邮箱。thx.

上一篇下一篇

猜你喜欢

热点阅读