Разочарованный отсутствием хороших сетевых API в Android/Java, я разработал коллекцию удобных сетевых инструментов для повседневной разработки под Android.
Javadoc должен содержать всю информацию, необходимую для понимания методов, но если нет, не стесняйтесь добавлять проблему в github, и я отвечу на любые вопросы! :)
Если вам нравится то, что я делаю с помощью Android Network Tools и других моих проектов, теперь вы можете напрямую поддержать мою работу! Покупая мне кофе ☕, вы не просто удовлетворяете мою потребность в кофеине — вы помогаете мне уделять больше времени разработке и совершенствованию этих проектов с открытым исходным кодом. Каждый кофе имеет значение и приносит больше инноваций в мир кибербезопасности. Спасибо за вашу поддержку – это очень важно для меня и сообщества открытого исходного кода!
Пример приложения опубликован в Google Play и F-Droid, чтобы вы могли быстро и легко протестировать библиотеку. Наслаждаться! И, пожалуйста, сообщите нам, если ваши тесты дают разные результаты.
Эта библиотека еще не выпущена в Maven Central, до тех пор вы можете добавить ее как библиотечный модуль или использовать JitPack.io.
добавить удаленный URL-адрес Maven
repositories {
maven {
url " https://jitpack.io "
}
}
затем добавьте зависимость библиотеки. Не забудьте проверить наличие последней версии здесь
dependencies {
compile ' com.github.stealthcopter:AndroidNetworkTools:0.4.5.3 '
}
Требуется разрешение на подключение к Интернету (очевидно...)
< uses-permission android : name = " android.permission.INTERNET " />
Простой сканер портов TCP/UDP на основе Java, быстрый и простой в использовании. По умолчанию он попытается угадать лучший тайм-аут и потоки, которые будут использоваться при сканировании, в зависимости от того, выглядит ли адрес как локальный хост, локальная сеть или удаленный. Вы можете переопределить их самостоятельно, вызвав 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() [по умолчанию 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, если он доступен на устройстве (некоторые устройства поставляются без него), а в противном случае возвращается к TCP-запросу на порт 7 (эхо-запрос).
// 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 в ваше приложение или устройство, чтобы он всегда был доступен.
Примечание. Если вам нужен более продвинутый сканер портов, вам следует рассмотреть возможность компиляции nmap в свой проект и использования его вместо этого.
Отправляет пакет Wake-on-Lan на 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
)