Enttäuscht über den Mangel an guten Netzwerk-APIs in Android/Java habe ich eine Sammlung praktischer Netzwerk-Tools für die alltägliche Android-Entwicklung entwickelt.
Das Javadoc sollte alle Informationen enthalten, die zum Verständnis der Methoden erforderlich sind. Wenn nicht, können Sie gerne ein Problem in Github hinzufügen, und ich werde alle Fragen beantworten! :) :)
Wenn Ihnen gefällt, was ich mit Android Network Tools und meinen anderen Projekten mache, können Sie meine Arbeit jetzt direkt unterstützen! Indem Sie mir einen Kaffee spendieren ☕, stillen Sie nicht nur meinen Koffeinbedarf – Sie helfen mir auch, mehr Zeit für die Entwicklung und Verbesserung dieser Open-Source-Projekte aufzuwenden. Jeder Kaffee zählt und bringt mehr Innovation in die Welt der Cybersicherheit. Vielen Dank für Ihre Unterstützung – sie bedeutet mir und der Open-Source-Community sehr viel!
Die Beispiel-App wird auf Google Play und F-Droid veröffentlicht, damit Sie die Bibliothek schnell und einfacher testen können. Genießen! Und bitte geben Sie uns Feedback, wenn Ihre Tests zu unterschiedlichen Ergebnissen führen.
Diese Bibliothek ist noch nicht in Maven Central veröffentlicht. Bis dahin können Sie sie als Bibliotheksmodul hinzufügen oder JitPack.io verwenden
Remote-Maven-URL hinzufügen
repositories {
maven {
url " https://jitpack.io "
}
}
Fügen Sie dann eine Bibliotheksabhängigkeit hinzu. Denken Sie daran , hier nach der neuesten Version zu suchen
dependencies {
compile ' com.github.stealthcopter:AndroidNetworkTools:0.4.5.3 '
}
Erfordert eine Internetberechtigung (natürlich...)
< uses-permission android : name = " android.permission.INTERNET " />
Ein einfacher Java-basierter TCP/UDP-Port-Scanner, schnell und einfach zu bedienen. Standardmäßig wird versucht, das beste Zeitlimit und die besten Threads für den Scan zu ermitteln, je nachdem, ob die Adresse wie „localhost“, „lokales Netzwerk“ oder „remote“ aussieht. Sie können diese selbst überschreiben, indem Sie setNoThreads() und setTimeoutMillis() aufrufen.
// 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
}
});
Findet Geräte, die auf Ping reagieren und sich im selben Subnetz wie das aktuelle Gerät befinden. Sie können den Timeout für den Ping mit setTimeOutMillis() [Standard 2500] und die Anzahl der Threads mit setNoThreads() [Standard 255] festlegen.
// 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
}
});
Verwendet die native Ping-Binärdatei, sofern auf dem Gerät verfügbar (einige Geräte sind ohne diese) und greift auf eine TCP-Anfrage an Port 7 (Echo-Anfrage) zurück, wenn dies nicht der Fall ist.
// 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 ) {
...
}
});
Hinweis: Wenn wir zum Erkennen von Geräten auf die Verwendung von TCP-Port 7 (auf Java-Art) zurückgreifen müssen, werden wir deutlich weniger finden als mit der nativen Ping-Binärdatei. Wenn dies ein Problem darstellt, können Sie erwägen, Ihrer Anwendung oder Ihrem Gerät eine Ping-Binärdatei hinzuzufügen, damit diese immer verfügbar ist.
Hinweis: Wenn Sie einen fortgeschritteneren Portscanner wünschen, sollten Sie erwägen, nmap in Ihr Projekt zu kompilieren und stattdessen dieses zu verwenden.
Sendet ein Wake-on-Lan-Paket an die IP-/MAC-Adresse
String ipAddress = "192.168.0.1" ;
String macAddress = "01:23:45:67:89:ab" ;
WakeOnLan . sendWakeOnLan ( ipAddress , macAddress );
Weitere nützliche Methoden:
// Get a MAC Address from an IP address in the ARP Cache
String ipAddress = "192.168.0.1" ;
String macAddress = ARPInfo . getMacFromArpCache ( ipAddress );
Es ist ein Standard-Gradle-Projekt.
Ich freue mich über Pull-Anfragen, Probleme und Feedback.
git checkout -b my-new-feature
)git commit -am 'Added some feature'
)git push origin my-new-feature
)