对 android / java 中缺乏良好的网络 api 感到失望,我为日常 android 开发开发了一系列方便的网络工具。
javadoc 应该提供理解这些方法所需的所有信息,但如果没有,请随意在 github 中添加问题,我将解决任何问题! :)
如果您喜欢我使用 Android Network Tools 和其他项目所做的事情,您现在可以直接支持我的工作!通过给我买一杯咖啡☕,您不仅满足了我对咖啡因的需求,还帮助我投入更多时间来开发和改进这些开源项目。每一杯咖啡都很重要,并为网络安全世界带来更多创新。感谢您的支持——这对我和开源社区来说意味着整个世界!
示例应用程序发布在 Google Play 和 F-Droid 上,让您可以快速、轻松地测试该库。享受!如果您的测试产生不同的结果,请向我们反馈。
该库尚未在 Maven Central 中发布,在此之前您可以添加为库模块或使用 JitPack.io
添加远程maven url
repositories {
maven {
url " https://jitpack.io "
}
}
然后添加库依赖项。请记得在此处检查最新版本
dependencies {
compile ' com.github.stealthcopter:AndroidNetworkTools:0.4.5.3 '
}
需要互联网许可(显然......)
< uses-permission android : name = " android.permission.INTERNET " />
一个简单的基于java的TCP/UDP端口扫描器,快速且易于使用。默认情况下,它会尝试猜测扫描时使用的最佳超时和线程,具体取决于地址是否类似于本地主机、本地网络或远程。您可以通过调用 setNoThreads() 和 setTimeoutMillis() 自行覆盖它们
// Synchronously
ArrayList < Integer > openPorts = PortScan . onAddress ( "192.168.0.1" ). setMethodUDP (). setPort ( 21 ). doScan ();
// Asynchronously
PortScan . onAddress ( "192.168.0.1" ). setTimeOutMillis ( 1000 ). setPortsAll (). setMethodTCP (). doScan ( new PortScan . PortListener () {
@ Override
public void onResult ( int portNo , boolean open ) {
if ( open ) // Stub: found open port
}
@ Override
public void onFinished ( ArrayList < Integer > openPorts ) {
// Stub: Finished scanning
}
});
查找与当前设备位于同一子网上的响应 ping 的设备。您可以使用 setTimeOutMillis() 设置 ping 的超时时间 [默认 2500],并使用 setNoThreads() 设置线程数 [默认 255]
// Asynchronously
SubnetDevices.fromLocalAddress().findDevices(new SubnetDevices.OnSubnetDeviceFound() {
@Override
public void onDeviceFound(Device device) {
// Stub: Found subnet device
}
@Override
public void onFinished(ArrayList<Device> devicesFound) {
// Stub: Finished scanning
}
});
如果设备上可用,则使用本机 ping 二进制文件(某些设备没有它),如果没有,则回退到端口 7 上的 TCP 请求(回显请求)。
// Synchronously
PingResult pingResult = Ping . onAddress ( "192.168.0.1" ). setTimeOutMillis ( 1000 ). doPing ();
// Asynchronously
Ping . onAddress ( "192.168.0.1" ). setTimeOutMillis ( 1000 ). setTimes ( 5 ). doPing ( new Ping . PingListener () {
@ Override
public void onResult ( PingResult pingResult ) {
...
}
});
注意:如果我们确实必须回退到使用 TCP 端口 7(java 方式)来检测设备,我们会发现比使用本机 ping 二进制文件要少得多。如果这是一个问题,您可以考虑将 ping 二进制文件添加到您的应用程序或设备中,以便它始终可用。
注意:如果您想要更高级的 portscanner,您应该考虑将 nmap 编译到您的项目中并使用它。
向 IP/MAC 地址发送网络唤醒数据包
String ipAddress = "192.168.0.1" ;
String macAddress = "01:23:45:67:89:ab" ;
WakeOnLan . sendWakeOnLan ( ipAddress , macAddress );
其他有用的方法:
// Get a MAC Address from an IP address in the ARP Cache
String ipAddress = "192.168.0.1" ;
String macAddress = ARPInfo . getMacFromArpCache ( ipAddress );
这是一个标准的 Gradle 项目。
我欢迎拉取请求、问题和反馈。
git checkout -b my-new-feature
)git commit -am 'Added some feature'
)git push origin my-new-feature
)