Re: threaded network



For dns lookup,

	http://www.chiark.greenend.org.uk/~ian/adns/

for GNU asynchronous DNS.

Not as easy as synchronous dns, and it'd take a bit
of work to integrate it with the gtk main loop...
(ie it'd be nice if it would just take a callback to invoke
on success/failure and managed putting itself/removing
itself from the mainloop)

- Dave

On Tue, 16 Nov 1999, Roberto Zunino wrote:

> 
> On Mon, 15 Nov 1999, Evan Martin wrote:
> 
> > > Wouldn't it be a lot easier/more reliable ot use a gdk_input handler
> > > to call a callback when there actually is data ready, and to use a
> > > non-blocking socket read?  (or whatever the equivalent glib
> > > function is these days == of gdk_input_add) - sockets are fd's too.
> > >
> > >  Michael
> > 
> > It will still block on other network operations.  gethostbyname() and
> > connect() come to mind.
> > 
> > I recall some sort of support for non-blocking host lookups in either GTK or
> > GNOME (which use callbacks), but connect() will still have the problem.
> 
> A few months ago I believed you must block for any network operation. Then
> I discovered it's possible to do async handling of them for nearly every
> operation (even connect!) :-)
> I don't go into the details, but it's possible to do connect,accept, and
> normal I/O without polling using file descriptors and select()/poll()
> calls. this means that _all_ network stuff is doable in a clean way
> _except_ (sigh!) AFAIK dns lookup.
> 
> If you want a code example you can look at
> http://www.cli.di.unipi.it/~zunino/gnome-socket.[ch]
> 
> It's only an hack, but it shows how to do basic network things without
> blocking. This includes connect(), accept(), read/write, and dns lookup
> (but via the deprecated gnome_dns). BTW, the example uses glib's
> IOChannels but you could want to use normal file descriptors: in this case
> see gdk_input_add() and friends.
> 
> For more info read the man pages for accept and connect esp. searching for
> "select" : you will find the POSIX (I believe) way to do it.
> "info libc" is also useful in the socket part.
> 
> I keep saying to me "You must put this in glib, you must put this ...".
> 
> Hope this helps,
> Zun.
> 
> 
> -- 
> To unsubscribe: mail gnome-devel-list-request@gnome.org with "unsubscribe"
> as the Subject.
> 
> 



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]