Re: threaded network
- From: David Benson <daveb idealab com>
- To: Roberto Zunino <zunino cli di unipi it>
- cc: Evan Martin <eeyem u washington edu>, Gnome Devel List <gnome-devel-list gnome org>, NotZed <zucchi zedzone mmc com au>, recipient list not shown: ;
- Subject: Re: threaded network
- Date: Tue, 16 Nov 1999 08:05:18 -0800 (PST)
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]