On 22/07/2023 04:29, Bob Sneidar via use-livecode wrote:
Use sockets to test the connection.
Open socket to <url:port>
If the result is not empty then…
Close socket <url:port>
Hmmm - I have tried it but not got reliable results.
According to the dictionary that won't work reliably. Dictionary says:
(4.5) The open socket command no longer blocks on DNS resolution.
Instead, if resolution is required the command will return immediately
and the DNS lookup will happen in the background. If resolution fails,
then a socketError message is sent in the same was as if connection
fails.
So if you need a DNS resolution, you'll get an empty result - and a
later socketError message. Your suggested code takes the empty result as
a sign things are working - when they may not be.
(When I try to connect to a non existent host:port, I do get the empty
result, but I don't seem to be getting the socketError messages. So
there may be a bug in there - I'll try to track it down more closely,
and if I can get anything reliable, submit a bug report).
btw - livekode.com was my first attempt at a "non-existent host" - and
it does exist !!
Alex.
On Jul 21, 2023, at 17:49, Alex Tweedly via use-livecode
<use-livecode@lists.runrev.com> wrote:
On 22/07/2023 01:02, prothero--- via use-livecode wrote:
Folks:
Sorry for the trivial question, but..
I have an app on my iphone that I am updating from a several years old app the
previously worked on an older version of livecode. It needs to access a mysql
database on the internet. It works fine when there is internet service.
I test access by downloading a file with a simple text code. If there code is
returned in the message, I continue accessing the database. However, when there is
no internet, the "put URL” command seems to hang forever. I’ve looked for a way
to set the timeout for an internet command, but…. can’t,.
Could you direct me to a simple explanation about how to set a reasonable
internet not connected message?
.... not thoroughly tested ....
You should, I think, be able to do this using tsNetSetTimeouts. But I wouldn't
:-)
I'd do something like the following - I've tested some, but not all, failure
cases, but haven't tested a successful url.
local sEventID
-- neverhappens.com is a website - returns "Forbidden"
-- nevehapens.com isn't, so almost immediately returns "can't be reached"
-- I didn't test a properly working case :-)
constant KURL = "http://neverhappens.com"
on mouseup
load url kURL with message "gotareply"
send "timetocheck failed" to me in 10 seconds -- or whatever timeout
you want
put the result into sEventID
end mouseup
on gotareply pURL, pURLStatus
cancel sEventID
timetocheck pURLStatus
end gotareply
on timetocheck pWhat
local tAnswer
put "time to check" && pWhat &CR after msg
if pWhat = "loaded" then
put URL kURL into tAnswer
if tAnswer contains "mycode" then
-- Internet is good
put "Internet is good" &CR after msg
end if
end if
-- Internet problematic
put "problem" &CR after msg
if pWhat = "error" then put libUrlErrorData(kURL) &CR after msg
unload URL KURL
end timetocheck
Alex.
_______________________________________________
use-livecode mailing list
use-livecode@lists.runrev.com
Please visit this url to subscribe, unsubscribe and manage your subscription
preferences:
http://lists.runrev.com/mailman/listinfo/use-livecode
_______________________________________________
use-livecode mailing list
use-livecode@lists.runrev.com
Please visit this url to subscribe, unsubscribe and manage your subscription
preferences:
http://lists.runrev.com/mailman/listinfo/use-livecode
_______________________________________________
use-livecode mailing list
use-livecode@lists.runrev.com
Please visit this url to subscribe, unsubscribe and manage your subscription
preferences:
http://lists.runrev.com/mailman/listinfo/use-livecode