PDA

View Full Version : سوال: اتصال کاربر به اینترنت



dracula_killer
یک شنبه 15 بهمن 1391, 22:36 عصر
سلام
یه دکمه دارم تو یه برنامه که کاربر وقتی روش کلیک کرد اول بررسی کنه که کاربر به اینترنت متصل هست یا خیر
اگر جواب آره بود یک سری عملیات رو انجام بده و اگر هم خیر که یک پیغام خطا نمایش بده
با انتهاش کاری ندارم
سوالم درباره ی ابتداشه.اینکه چجوری بفهمم کاربر به اینترنت متصل هست یا خیر؟از چه کلاسی باید استفاده کرد؟

Hybrid
یک شنبه 15 بهمن 1391, 23:25 عصر
سلام ، شما میتونید از کلاس های URL و HttpURLConnection استفاده کنید . نحوه ی کار نمونه کد هم ساده هست به یک آدرس اینترنتی وصل میشه و محتوای اون سایت رو داخل یک متغیر از نوع Object میزاره در صورت پرتاب Exception تابع false رو برمیگردونه.


public static boolean isInternetConnected(){//این متد وصل بودن اینترنت روبررسی میکنه
try{
URL myUrl = new URL("http://www.google.com");
HttpURLConnection myUrlConnection = (HttpURLConnection)myUrl.openConnection();
@SuppressWarnings("unused")
Object content = myUrlConnection.getContent();
}catch(UnknownHostException e){
e.printStackTrace();
return false;//if exception thrown return false
}catch(IOException e2){
e2.printStackTrace();
return false;
}
return true;//if internet connected return true
}

واسه اونایی هم که مبتدی هستند - نحوه ی استفاده از کد بالا در برنامه :

public static void main(String[] args){
if(isInternetConnected()){
System.out.println("Internet is Connected!");
}else{
System.out.println("Internet is not Connected!");
}
}

dracula_killer
دوشنبه 16 بهمن 1391, 10:37 صبح
سلام ، شما میتونید از کلاس های URL و HttpURLConnection استفاده کنید . نحوه ی کار نمونه کد هم ساده هست به یک آدرس اینترنتی وصل میشه و محتوای اون سایت رو داخل یک متغیر از نوع Object میزاره در صورت پرتاب Exception تابع false رو برمیگردونه.


public static boolean isInternetConnected(){//این متد وصل بودن اینترنت روبررسی میکنه
try{
URL myUrl = new URL("http://www.google.com");
HttpURLConnection myUrlConnection = (HttpURLConnection)myUrl.openConnection();
@SuppressWarnings("unused")
Object content = myUrlConnection.getContent();
}catch(UnknownHostException e){
e.printStackTrace();
return false;//if exception thrown return false
}catch(IOException e2){
e2.printStackTrace();
return false;
}
return true;//if internet connected return true
}

واسه اونایی هم که مبتدی هستند - نحوه ی استفاده از کد بالا در برنامه :

public static void main(String[] args){
if(isInternetConnected()){
System.out.println("Internet is Connected!");
}else{
System.out.println("Internet is not Connected!");
}
}

ممنون اما راهی نیست که مجبور نباشیم محتویات رو توی آبجکت بریزیم؟چون نمی خوام الکی کاربر ترافیکش بابت این قضیه حروم شه.

sina_oonline
دوشنبه 16 بهمن 1391, 15:14 عصر
نیازی نیست که کل آبجکت رو بخونید از طریق تابعی به نام read() اولین بایت صرفا خونده میشه( اسم دقیق تابع یادم نیست فکر می کنم همین بوده)

Hybrid
دوشنبه 16 بهمن 1391, 19:52 عصر
ممنون اما راهی نیست که مجبور نباشیم محتویات رو توی آبجکت بریزیم؟چون نمی خوام الکی کاربر ترافیکش بابت این قضیه حروم شه.
من اونو مثال زدم وگرنه راه که زیاد هست ، مثلا Ping کردن سایت (البته سایتی که همیشه در دسترس باشه مثلا Google )

public static boolean isInternetConnected(String address){
try{
final URL url = new URL("http://" + address);
final HttpURLConnection URLConnection = (HttpURLConnection)url.openConnection();
URLConnection.setConnectTimeout(100*10);
URLConnection.connect();
if(URLConnection.getResponseCode() == HttpURLConnection.HTTP_OK){
System.out.println("Ping " + address + " success");
return true;
}
}catch(MalformedURLException e1){
System.out.println(e1.toString());
}catch(IOException e){
System.out.println(e.toString());
}
return false;
}

نحوه ی استفاده از کد :

public static void main(String[] args){
if(isInternetConnected("www.google.com")){
System.out.println("Connected");
}else{
System.out.println("not Connected");
}
}