對 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
)