Android / Java に優れたネットワーク API が不足していることに失望し、日常の Android 開発に便利なネットワーク ツールのコレクションを開発しました。
javadoc には、メソッドを理解するために必要なすべての情報が記載されていますが、そうでない場合は、github に問題を追加してください。質問があればお答えします。 :)
Android ネットワーク ツールやその他のプロジェクトで私が行っていることを気に入っていただけましたら、私の仕事を直接サポートしていただけます。私にコーヒー ☕ を買ってくれるということは、私のカフェイン需要を刺激するだけでなく、これらのオープンソース プロジェクトの開発と改善により多くの時間を費やすことができます。どのコーヒーも重要であり、サイバーセキュリティの世界にさらなる革新をもたらします。ご支援に感謝いたします。私にとって、そしてオープンソース コミュニティにとって、それは世界を意味します。
サンプル アプリは 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() [デフォルト 2500] で ping のタイムアウトを設定でき、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 バイナリを使用し (一部のデバイスにはネイティブ 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 バイナリを追加して、いつでも利用できるようにすることを検討してください。
注: より高度なポートスキャナが必要な場合は、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
)