I'm trying to detect a network connection without changing the state of the
network.  For example, my application sets an alarm when the network is
activated, and when the alarm goes off, my app wants to see if the network
is open, without actually opening the network if it is closed.  This seems
to be a much more difficult proposition than I first expected.

>From what I can tell, the state of NetLib is separate from the state of the
actual network connection.  So the network can actually be "up" but
NetLibOpenCount() will return 0.  I can only assume this is due to the
Network services running in a separate task which communicates with the user
task thru NetLib, so NetLib maintains its state separately from .  

I've looked on the forum, and several people have asked how to detect the
network connection, and there haven't been many replies.  Those who do
reply, say "use NetLibOpenCount()" and as I've found, that isn't reliable,
because NetLibOpenCount == 0 if no apps are actively using the network
connection (ie no apps have called NetLibOpen() without a corresponding
NetLibClose() call).

So, enter the "hack" (shudder).  When the system (using OS 4.0) sends out
notification that the network connection has come up, my app calls
NetLibOpen() so that NetLibOpenCount() will be guaranteed to be > 0.  Then,
when my app's alarm is triggered, my app calls NetLibClose().  If
NetLibClose() returns netErrNotOpen, my app knows that the network is no
longer open (and yes, if NetLibClose() returns a valid code--errNone or
netErrStillOpen--the app calls NetLibOpen() again, to maintain the open
count :P).

So this works fine.  I can tell when the network is open or closed . . .
unless, of course, the network fails to actually come up the first time :-/
If I open the network from the Network Prefs, but the network fails to
actually come up, it seems that the OS is still sending out the "network up"
notification, and there is no way to actually verify if bringing up the
network actually succeeded or whether it failed.

Anyone have any ideas here?

Thanks,

-DGA

-- 
For information on using the Palm Developer Forums, or to unsubscribe, please see 
http://www.palmos.com/dev/tech/support/forums/

Reply via email to