PDA

View Full Version : تشخیص اتصال به اینترنت



gilas1368
سه شنبه 25 شهریور 1393, 18:33 عصر
سلام ب همه

من با استفاده از کد زیر میام اتصال به شبکه رو تشخیص میدم


private boolean isNetworkConnected() { ConnectivityManager connectivity = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
if (connectivity != null)
{
NetworkInfo[] info = connectivity.getAllNetworkInfo();
if (info != null)
for (int i = 0; i < info.length; i++)
if (info[i].getState() == NetworkInfo.State.CONNECTED)
{
return true;
}


}
return false;
}

اما این کد فقط اتصال به شبکه رو تشخیص میده
به عنوان مثال حالتی رو در نظر بگیرید که شما به شبکه متصل شدید اما ب دلایلی مثل اتمام اعتبار یا زمان اشتراک اینترنتتون برنامه به اینترنت دسترسی نداره ( دقت کنین ک ب شبکه متصلید اما نمیتونید ارسال و دریافت داده داشته باشید)
توی این حالت کد بالا بازم مقدار true رو برمیگردونه در حالی ک نمیشه ارسال و دریافتی داشت
آیا روشی وجود داره که بشه تشخیص داد برنامه به اینترنت متصله ( به اینترنت ن ب شبکه)؟:متفکر:

ممنون میشم راهنمائیم کنین

saeed_g21
سه شنبه 25 شهریور 1393, 18:39 عصر
در این هم کد (http://barnamenevis.org/showthread.php?447908-%D8%A7%DB%8C%D9%86-%D9%87%D9%85-%DA%A9%D8%AF) اولاش هست
پیدا می کنی

gilas1368
سه شنبه 25 شهریور 1393, 18:46 عصر
در این هم کد (http://barnamenevis.org/showthread.php?447908-%D8%A7%DB%8C%D9%86-%D9%87%D9%85-%DA%A9%D8%AF) اولاش هست
پیدا می کنی

سعید جان، این کدی ک شما میگید رو من داخل سوال گذاشتم و اونجا گفتم ک
این کد فقط اتصال رو چک میکنه و ب اینک شما ب اینترنت دسترسی دارید یا ن کاری نداره
من نمیخام فقط اتصال چک بشه
به عنوان مثال من الان ب شبکه wifi متصلم اما اینترنتم قطعه پاسخی ک این کد ب من میده مقدار true هستش. در حالیکه من میخام وضعیت اتصال به اینترنت رو چک کنم و اگ اینترنتم وصل بود داده ای رو ارسال و پاسخش رو دریافت کنم

saeed_g21
سه شنبه 25 شهریور 1393, 19:11 عصر
دوست عزیز خوب نگاه کن دیگه :لبخند:
public static boolean isConnected(Context context) { ConnectivityManager cm = (ConnectivityManager)context
.getSystemService(Context.CONNECTIVITY_SERVICE);

NetworkInfo activeNetwork = cm.getActiveNetworkInfo();
if (activeNetwork != null && activeNetwork.isConnected()) {
try {
URL url = new URL("http://www.google.com/");
HttpURLConnection urlc = (HttpURLConnection)url.openConnection();
urlc.setRequestProperty("User-Agent", "test");
urlc.setRequestProperty("Connection", "close");
urlc.setConnectTimeout(1000); // Timeout
urlc.connect();
if (urlc.getResponseCode() == 200) {
return true;
} else {
return false;
}
} catch (IOException e) {
Log.i("warning", "Error checking internet connection", e);
return false;
}
}

return false; }

این کد اول میره به سایت گوگل اگه رفت true میشه اگه نرفت false میشه

gilas1368
سه شنبه 25 شهریور 1393, 19:25 عصر
دوست عزیز خوب نگاه کن دیگه :لبخند:
public static boolean isConnected(Context context) { ConnectivityManager cm = (ConnectivityManager)context
.getSystemService(Context.CONNECTIVITY_SERVICE);

NetworkInfo activeNetwork = cm.getActiveNetworkInfo();
if (activeNetwork != null && activeNetwork.isConnected()) {
try {
URL url = new URL("http://www.google.com/");
HttpURLConnection urlc = (HttpURLConnection)url.openConnection();
urlc.setRequestProperty("User-Agent", "test");
urlc.setRequestProperty("Connection", "close");
urlc.setConnectTimeout(1000); // Timeout
urlc.connect();
if (urlc.getResponseCode() == 200) {
return true;
} else {
return false;
}
} catch (IOException e) {
Log.i("warning", "Error checking internet connection", e);
return false;
}
}

return false; }

این کد اول میره به سایت گوگل اگه رفت true میشه اگه نرفت false میشه

مرسی بابت کدتون
اما کار نمیکنه و برنامه میره در حالت اغما
و بعدشم Crash میکنه و میپره بیرون

saeed_g21
سه شنبه 25 شهریور 1393, 19:43 عصر
مرسی بابت کدتون
اما کار نمیکنه و برنامه میره در حالت اغما
و بعدشم Crash میکنه و میپره بیرون

کد سالم هست و من ازش استفاده می کنم:متفکر:

rubiks.kde
سه شنبه 25 شهریور 1393, 19:46 عصر
این کد دوستمون رو باید با یه ترد جدا اجرا کنید.

به هرحال همین روش تنها روش موجود هست که شما باید درخواست معمولی به یه سایت سریع بدی و اگه جواب ok بود یعنی اینترنت داری و در غیر این صورت هم اینترنت وجود نداره.

gilas1368
سه شنبه 25 شهریور 1393, 19:49 عصر
کد سالم هست و من ازش استفاده می کنم:متفکر:

میشه نمونه کدی ک داخلش از این تابع استفاده میکنین برام بزارید؟

gilas1368
سه شنبه 25 شهریور 1393, 19:55 عصر
این کد دوستمون رو باید با یه ترد جدا اجرا کنید.

به هرحال همین روش تنها روش موجود هست که شما باید درخواست معمولی به یه سایت سریع بدی و اگه جواب ok بود یعنی اینترنت داری و در غیر این صورت هم اینترنت وجود نداره.

میشه ی نمونه برام بزارید نمیدونم چطور باید این کار وانجام بدم