ABA


"אני עושה בדיקת חיבור לאינטרנט TRY CATCH אבל :"
גירסת הדפסה        
קבוצות דיון פיתוח, תיכנות ובניית אתרים נושא #15852 מנהל    סגן המנהל    מפקח   Winner    צל"ש   מומחה  
אשכול מספר 15852
Nexus

   04:45   28.04.10   
אל הפורום  
  אני עושה בדיקת חיבור לאינטרנט TRY CATCH אבל :  
 
   ערכתי לאחרונה בתאריך 28.04.10 בשעה 04:48 בברכה, Nexus
 
ב constructor של form1 אני עושה בדיקה עם שימוש ב try catch של החיבור לאינטרנט על ידי כך שאני מנסה להוריד קובץ מסויים מאתר כלשהו ואם הוא לא מצליח הוא זורק לי exception .

הבעיה כשאני בא לבדוק את זה ומתנתק מהאינטרנט לוקח לו כמעט 20 שניות עד שהוא מגיע ל exception . כאילו בגלל שהוא מנסה להוריד הרבה זמן .
אם אני מחובר לאינטרנט אין exception מן הסתם והכל רץ חלק התוכנה עולה מהר .

זה הקטע של הבדיקת אינטרנט ב constructor :

remote_image_on_server = "http://www.ims.gov.il/Ims/Pages/RadarImage.aspx?Row=9&TotalImages=10&LangID=1&Location=";
try
{
Client.DownloadFile(remote_image_on_server, temp_dir + temp_file);
}
catch (WebException)
{


}

ב form1_load אני עושה בדיקה נוספת של חיבר לאינטרנט כי שם אני מנסה להעלות תמונה לתוכנה שלי מהספרייה temp_dir . אותה ספרייה שאני ב constructor מנסה להוריד לשם את הקובץ. בהתחלה .

אבל הבדיקה ב form1_load לא עושה בעיות רץ חלק ההודעה שאין חיבור לאינטרנט מופיעה מייד אם אני מבטל את הבדיקה ב constructor .

אני לא מבין למה הבדיקה ב constructor לוקחת לו 20 שניות לערך עד שהוא מגיע ל exception ? נראהל י זה קשור משהו ל Client.DownloadFile אבל לא בטוח .

תודה על העזרה .


                                שתף        
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד

  האשכול     מחבר     תאריך כתיבה     מספר  
  הייתי ממליץ לך לעשות את הבדיקה בדרך שונה BlacK EaglE 28.04.10 22:43 1
     נ.ב BlacK EaglE 29.04.10 10:47 2
         מחזק כל מה שאמרת :) ronen333  29.04.10 10:56 3
         השתמשתי ב webrequest בסוף האם הקוד טוב ? Nexus 29.04.10 23:08 4
             וב form1 אני קורא ל class הזה : Nexus 29.04.10 23:09 5

       
BlacK EaglE
חבר מתאריך 23.3.02
1354 הודעות
   22:43   28.04.10   
אל הפורום  
  1. הייתי ממליץ לך לעשות את הבדיקה בדרך שונה  
בתגובה להודעה מספר 0
 
   הדרך הכי פשוטה ויעילה היא פשוט לשלוח פינג לשרת.


private static bool CanPing(string address)
{
Ping ping = new Ping();

try
{
PingReply reply = ping.Send(address, 2000);
if (reply == null) return false;

return (reply.Status == IPStatus.Success);
}
catch (PingException e)
{
return false;
}
}

}

פונקציה פשוטה המקבלת כ-string את כתובת השרת, ומחזירה true או false אם הוא מחזיר פינג או לא.

כמובן שיש צורך ב: using System.Net.NetworkInformation

ה-2000 בתוך הפונקציה (2 שניות) יכול להיות כל זמן שאתה רוצה ל-timeout.

בהצלחה


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
BlacK EaglE
חבר מתאריך 23.3.02
1354 הודעות
   10:47   29.04.10   
אל הפורום  
  2. נ.ב  
בתגובה להודעה מספר 1
 
   אם זה מפריע לך שהתוכנה נתקעת בזמן הזה, תמיד תוכל לפתוח אותה ב-Thread.

בהצלחה


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
ronen333 
חבר מתאריך 20.2.03
6069 הודעות
   10:56   29.04.10   
אל הפורום  
  3. מחזק כל מה שאמרת :)  
בתגובה להודעה מספר 2
 
  


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Nexus

   23:08   29.04.10   
אל הפורום  
  4. השתמשתי ב webrequest בסוף האם הקוד טוב ?  
בתגובה להודעה מספר 2
 
  

sing System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Net;
using System.IO;

namespace File_Download_Testings
{
partial class File_Download_Test : Form
{
HttpWebRequest req;
HttpWebResponse resp;


public File_Download_Test()
{

InitializeComponent();
}
public void testing()
{
try
{
System.Net.IPHostEntry objIPHE = System.Net.Dns.GetHostEntry("www.ims.gov.il");

MessageBox.Show("connected");

}
catch (Exception exc)
{
MessageBox.Show("...No Conn..."+exc);


}
try
{
req = (HttpWebRequest)WebRequest.Create("http://www.ims.gov.il/Ims/Pages/RadarImage.aspx?Row=9&TotalImages=10&LangID=1&Location=");
req.Timeout = 3000;
resp = (HttpWebResponse)req.GetResponse();
if (resp.StatusCode.ToString().Equals("OK"))
{
MessageBox.Show("its connected.");

}
else
{
MessageBox.Show("its not connected.");

}
}
catch (Exception)
{
MessageBox.Show("its not connected.");

}
finally
{
if (resp != null) resp.Close();
}

}
}

}


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Nexus

   23:09   29.04.10   
אל הפורום  
  5. וב form1 אני קורא ל class הזה :  
בתגובה להודעה מספר 4
 
   ובדקתי על ידי ניתוק האינטרנט בכוונה ונראה שזה עובד בשני המקרים .
האם הקוד אבל הזה של ה class החדש טוב איך שהוא כתוב ?


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד

תגובה מהירה  למכתב מספר: 
 
___________________________________________________________________

___________________________________________________________________
למנהלים:  נעל | תייק בארכיון | מחק | העבר לפורום אחר | מחק תגובות | עגן אשכול
       



© כל הזכויות שמורות ל-רוטר.נט בע"מ rotter.net