How does one check if the user of an application is currently on the internet?
This is what I found from the cocoa-dev mailing list:
I have SystemConfiguration.framework added to my project, and I use this function:
BOOL networkReachableWithoutAnythingSpecialHappening(void) { BOOL success; SCNetworkConnectionFlags reachabilityStatus; success = SCNetworkCheckReachabilityByName(“www.apple.com”, &reachabilityStatus); return (success && (reachabilityStatus & kSCNetworkFlagsReachable) && !(reachabilityStatus & kSCNetworkFlagsConnectionRequired)); }
Hope that’s useful.
Thanks that function works great. –DavidKopec
I changed the number 3 to ‘kSCNetworkFlagsReachable’ as this is the correct flag to check for. success is a bit misleading, it simply returns false (or NO) if it cannot determine reachability. – MattJarjoura
“success = false” is pretty leading to me ;P –MarkStultz
The above code doesn’t work in many cases (Airport accessible, but offline, and others). There is a much better method outlined here: http://www.cocoabuilder.com/archive/message/cocoa/2003/3/15/79076 - MichaelBianco
Modified the above code to incorporate wisdom from MichaelBianco’s link (added kSCNetworkFlagsConnectionRequired to the final test). –SidneySM
P.S. My first edit!