android/java에 좋은 네트워크 API가 없다는 점에 실망하여 저는 일상적인 안드로이드 개발을 위한 편리한 네트워킹 도구 모음을 개발했습니다.
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 " />
빠르고 사용하기 쉬운 간단한 자바 기반 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
}
});
장치에서 사용 가능한 경우 기본 핑 바이너리를 사용하고(일부 장치에는 이 바이너리가 제공되지 않음) 그렇지 않은 경우 포트 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을 프로젝트에 컴파일하고 대신 사용하는 것을 고려해야 합니다.
IP/MAC 주소로 Wake-on-Lan 패킷을 보냅니다.
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
)