ผิดหวังกับการขาด apis เครือข่ายที่ดีใน 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 ที่อยู่บนเครือข่ายย่อยเดียวกันกับอุปกรณ์ปัจจุบัน คุณสามารถตั้งค่าการหมดเวลาสำหรับการ 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 (คำขอ echo) หากไม่มี
// 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 (วิธีจาวา) เพื่อตรวจจับอุปกรณ์ เราจะพบว่ามีค่าน้อยกว่าไบนารี 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 );
มันเป็นโปรเจ็กต์การไล่ระดับมาตรฐาน
ฉันยินดีรับคำขอดึง ปัญหา และข้อเสนอแนะ
git checkout -b my-new-feature
)git commit -am 'Added some feature'
)git push origin my-new-feature
)