رتبه موضوع:
  • 0 رای - 0 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
چک کردن اتصال به سرور
#1
سلام دوستان و اساتید عزیز
من پروژه قبلم روش چک اتصال به سرور رو از نظر خودم خیلی بد نوشتم و میخام توی پروژه جدیدم یه روش بهینه و سریع تری رو برای این کار انتخاب و پیاده سازی کنم.
اگه میشه توضیحاتی درباره این که چطوری اتصال به سرور رو چک کنم که سرعتش بهینه ترین باشه؟
پاسخ
تشکر شده توسط:
#2
قبل از هر کاری باید مجوز ACCESS_NETWORK_STATE و INTERNET رو به برنامه بدین (توی مانیفست) :
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.INTERNET" />

حالا با این متد میتونین وضعیت اتصال به اینترنت رو بررسی کنید:
public static boolean isOnline() {
    ConnectivityManager connectivityManager = (ConnectivityManager) CONTEXT.getSystemService(CONNECTIVITY_SERVICE);
    NetworkInfo networkInfo = connectivityManager.getActiveNetworkInfo();
    if (networkInfo == null || !networkInfo.isConnected()) {
        return false;
    }
    try {
        Process ipProcess = Runtime.getRuntime().exec("/system/bin/ping -c 1 8.8.8.8");
        if (ipProcess.waitFor() != 0) {
            return false;
        }
    } catch (IOException | InterruptedException e) {
        e.printStackTrace();
    }
    return true;
}

من خودم شخصاً از این متد توی کلاس App استفاده میکنم. مثالی از نحوه‌ی فراخوانی:
if (App.isOnline()) {
    // ...
} else {
    Toast.makeText(this, "There is no internet connection available...", Toast.LENGTH_SHORT).show();
}
پاسخ
تشکر شده توسط:
#3
ACCESS_NETWORK_STATE برای این در اندروید 6 نیازی به گرفتن ران تایم پرمیشن نیست؟
و ایا میشه اینی که شما پینگ گرفتید از 8.8.8.8 از سرور خودمون بگیریم؟
اگه این کار رو بکنیم چه مشکلاتی احتمالش هستش به وجود بیاد؟
پاسخ
تشکر شده توسط:
#4
خیر این مجوز نیاز به گرفتن Runtime نداره. این تاپیک رو بخونید: پرمیشن ها در اندروید 6

آدرس IP که نوشتم یعنی 8.8.8.8 متعلق به گوگل هست و معمولاً خیلی سریعتر از سایتهای عادی جواب میده ولی مشکلی نداره که بجاش سایت خودتون رو بنویسید.
پاسخ
تشکر شده توسط: balutsoft




کاربران در حال بازدید این موضوع: 1 مهمان