× The internal search function is temporarily non-functional. The current search engine is no longer viable and we are researching alternatives.
As a stop gap measure, we are using Google's custom search engine service.
If you know of an easy to use, open source, search engine ... please contact support@midrange.com.



Craig Jacobsen wrote:
When it drops, the connect() hangs for 3 to 5 minutes trying to make a
connection. (I would like that to be a few seconds, but there are no time out values
that I can see.)

Here's an article that I wrote about timeouts with sockets. It describes two ways to do a timeout, and has sample code for the connect API:
http://systeminetwork.com/article/timeouts-sockets-0


Further, I would add that if you want to write robust TCP apps -- ones that can survive a network that's having trouble -- then you need to be using non-blocking sockets throughout your application.

Non-blocking assures that your application can NEVER get stuck forever waiting for the network. And in a robust application, that's a very important thing to do.

You were lucky in your instance -- you got stuck on the connect() API, which is relatively kind in that it times out after a number of minutes. Had you had the network error during a send() or recv() API, you might've gotten hung up permanently with no timeouts at all.

Use non-blocking with select() for everything you do. Write yourself a library of socket routines and put them in a service program and have them do all of the work for you, including the non-blocking and select() code.

In THAT environment, you'll never get hung up permanently, and you'll have complete control over how long you wait for a time out.

As an Amazon Associate we earn from qualifying purchases.

This thread ...

Follow-Ups:
Replies:

Follow On AppleNews
Return to Archive home page | Return to MIDRANGE.COM home page

This mailing list archive is Copyright 1997-2024 by midrange.com and David Gibbs as a compilation work. Use of the archive is restricted to research of a business or technical nature. Any other uses are prohibited. Full details are available on our policy page. If you have questions about this, please contact [javascript protected email address].

Operating expenses for this site are earned using the Amazon Associate program and Google Adsense.