Checking Internet connection on Vista

Alex Tweedly alex.tweedly at gmail.com
Fri Jun 20 19:36:35 EDT 2008


Eric Chatonet wrote:
> Bernard,
>
> Of course I can't send a GET request (or a LOAD): the software (I 
> cross my fingers :-) will be used by hundred thousands of persons (I 
> hope more :-)...

I'm not at all convinced that would be a problem. Every copy of Vista 
has the browser set to use the same default home page (probably 
msn.com); every download of Firefox is set to use the same home page - 
so there are millions of users doing a get on one of 3 or 4 highly 
popular pages every time they start their browser. "hundreds of 
thousands" of your users checking once per time they run your app is 
insignificant.

Once you ship more copies than Firefox you can start to worry :-)

However, there is a more serious problem than that ....

anything (HostNametoAddress, or openSocket, or ..) that uses a host name 
will try to do a DNS lookup on the host. So you are almost guaranteed 
that when the Internet connection is down, there can be a variable, but 
multi-second long, delay. Even worse, there is a distinct possibility 
that you will get a "false positive" result from HostNametoAddress due 
to DNS caching - any responsible host/domain will give a reasonably long 
DNS cache period, so if anyone on your local network has recently 
connected to the chosen host, its IP address will be cached on the 
Netgear (or equivalent), and therefore it can respond with an IP address 
without using, or checking, the Internet connection.


> I'll try what I can get from a simple openSocket but I guess that 
> HostNametoAddress built-in function uses it.
> That's the problem...
>

I'd suggest storing some numeric IP addresses, and doing something like
   shell("ping " & tIPAddr)
and checking the output for success. You could equally do a get or load 
on the numeric IP Address.

You could periodically (even every time the app is run - but not in a 
user-visible delay path) do a shell ("nslookup" && tHostName) to refresh 
your list of IP addresss.

> Le 20 juin 08 à 18:07, Bernard Devlin a écrit :
>
>> Maybe the most reliable time-critical way to check would be to open 
>> your own
>> socket on port 80 to something like www.google.com.  By setting the
>> SocketTimeoutInterval to a low value you would find out quickly if the
>> timeout occured without a response.  I'm thinking that you would not 
>> even
>> send a GET request, just see if the socket could be opened.
>>
>> bernard
>>
>> On Fri, Jun 20, 2008 at 4:52 PM, Eric Chatonet <
>> eric.chatonet at sosmartsoftware.com> wrote:
>>
>>> Thanks for testing at your place: it's invaluable :-)
>>> Tests I made were with the router connected but the ADSL modem 
>>> disconnected
>>> and I'm afraid it is the delay reason.
>>>
>>> Le 20 juin 08 à 17:45, Bernard Devlin a écrit :
>>>
>>>
>>>  I done some further tests, and mostly I'm getting a result with the 
>>> router
>>>> disconnected of less than 30ms now.  I can't reproduce the case 
>>>> where I
>>>> got
>>>> 14 seconds.  I had a look at socketTimeoutInterval and it seemed to 
>>>> make
>>>> no
>>>> difference at all.  Still, if you are getting lengthy delays then 
>>>> it looks
>>>> like this is not an adequate way to get a speedy test to see if the
>>>> internet
>>>> connection is still alive.
>>>>
>>>> Bernard
>>>>
>>>> On Fri, Jun 20, 2008 at 3:53 PM, Eric Chatonet <
>>>> eric.chatonet at sosmartsoftware.com> wrote:
>>>>
>>>>  Your allusion about SocketTimeoutInterval seems to be very well 
>>>> thought
>>>>> :-)
>>>>> The problem is that I (the user) can't accept more than a 200 ms 
>>>>> hang and
>>>>> this could be not enough when he is regularly connected.
>>>>> So this fails to address the problem :-(
>
> _______________________________________________
> use-revolution mailing list
> use-revolution at lists.runrev.com
> Please visit this url to subscribe, unsubscribe and manage your 
> subscription preferences:
> http://lists.runrev.com/mailman/listinfo/use-revolution
>




More information about the use-livecode mailing list