Dalam membangunkan aplikasi Ping untuk Android, adalah perkara biasa untuk menghadapi masalah semasa cuba ping pelayan luaran. Walaupun ping IP tempatan mungkin berfungsi, mengakses alamat IP luaran menimbulkan cabaran tertentu.
Satu punca yang berpotensi untuk masalah ini boleh dikaitkan dengan kebolehcapaian pelayan luaran. Untuk menyemak ini, pertimbangkan untuk mengubah suai kod anda untuk ping pelayan luaran yang berbeza, seperti 8.8.8.8 (Google DNS) atau 1.1.1.1 (Cloudflare DNS). Ini akan membantu menentukan sama ada isu itu terletak pada IP luaran tertentu yang anda sasarkan atau dengan kod anda.
Jika anda telah mengesahkan kebolehcapaian pelayan luaran dan masalah berterusan, periksa sintaks kod anda dengan teliti. Kaedah InetAddress.isReachable() mengambil dua parameter: alamat IP untuk ping dan nilai tamat masa. Pastikan anda telah menetapkan nilai tamat masa yang sesuai yang membenarkan masa yang mencukupi untuk operasi ping selesai.
Selain itu, pastikan anda telah mengisytiharkan kebenaran yang diperlukan dalam manifes aplikasi anda. Anda harus mengisytiharkan kebenaran android.permission.INTERNET secara eksplisit, yang membolehkan aplikasi anda membuat sambungan rangkaian.
Jika anda telah menyemak semua aspek ini dan isu itu masih berterusan, pertimbangkan untuk menggunakan pendekatan berbeza untuk melakukan ping IP luaran . Satu kaedah yang telah berjaya digunakan melibatkan pelaksanaan perintah shell melalui kaedah Runtime.exec(). Berikut ialah contoh coretan kod yang menunjukkan pendekatan ini:
private boolean executeCommand(){ System.out.println("executeCommand"); Runtime runtime = Runtime.getRuntime(); try { Process mIpAddrProcess = runtime.exec("/system/bin/ping -c 1 8.8.8.8"); int mExitValue = mIpAddrProcess.waitFor(); System.out.println(" mExitValue "+mExitValue); if(mExitValue==0){ return true; }else{ return false; } } catch (InterruptedException ignore) { ignore.printStackTrace(); System.out.println(" Exception:"+ignore); } catch (IOException e) { e.printStackTrace(); System.out.println(" Exception:"+e); } return false; }
Coretan kod ini menggunakan kaedah Runtime.exec() untuk melaksanakan perintah /system/bin/ping, yang membolehkan anda ping alamat IP luaran secara khusus. Pilihan -c 1 menentukan bahawa hanya satu permintaan ping harus dihantar. Kaedah ini mengembalikan nilai boolean yang menunjukkan sama ada ping berjaya (benar) atau tidak (salah).
Atas ialah kandungan terperinci Mengapa Apl Ping Android Saya Gagal Ping IP Luaran?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!