Add better error handling.
This commit is contained in:
29
Program.cs
29
Program.cs
@@ -54,25 +54,42 @@ namespace IPMonitor
|
||||
{
|
||||
int MAX_RETRIES=5;
|
||||
int TIMEOUT_BETWEEN_ATTEMPTS=30000;
|
||||
String request="http://checkip.dyndns.org/";
|
||||
|
||||
try
|
||||
{
|
||||
String address = null;
|
||||
String request="http://checkip.dyndns.org/";
|
||||
|
||||
for(int index=0;index<MAX_RETRIES && null==address;index++)
|
||||
{
|
||||
if(!NetworkStatus.IsNetworkAvailable(0))
|
||||
{
|
||||
MDTrace.WriteLine(LogLevel.DEBUG,String.Format("[IPMonitor::GetPublicIPAddress] The Network seems to be disconnected. Will retry after {0} (ms) ",request,TIMEOUT_BETWEEN_ATTEMPTS));
|
||||
try{Thread.Sleep(TIMEOUT_BETWEEN_ATTEMPTS);}catch{;}
|
||||
continue;
|
||||
}
|
||||
address = GetHttpRequest(request);
|
||||
if(null==address)
|
||||
{
|
||||
MDTrace.WriteLine(LogLevel.DEBUG,String.Format("[IPMonitor::GetPublicIPAddress] Request failed {0}. Will retry after {1} (ms) ",request,TIMEOUT_BETWEEN_ATTEMPTS));
|
||||
try{Thread.Sleep(TIMEOUT_BETWEEN_ATTEMPTS);}catch{;}
|
||||
continue;
|
||||
}
|
||||
}
|
||||
int first = address.IndexOf("Address: ") + 9;
|
||||
int last = address.LastIndexOf("</body>");
|
||||
address = address.Substring(first, last - first);
|
||||
|
||||
return address;
|
||||
|
||||
try
|
||||
{
|
||||
int first = address.IndexOf("Address: ") + 9;
|
||||
int last = address.LastIndexOf("</body>");
|
||||
address = address.Substring(first, last - first);
|
||||
MDTrace.WriteLine(LogLevel.DEBUG,String.Format("Request succeeded: {0} -> {1}",request,address));
|
||||
return address;
|
||||
}
|
||||
catch(Exception exception)
|
||||
{
|
||||
MDTrace.WriteLine(LogLevel.DEBUG,String.Format("Exception parsing address: {0}",exception.ToString()));
|
||||
return null;
|
||||
}
|
||||
}
|
||||
catch(Exception exception)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user