> Koen writes:
>
> > accept :: Socket -> IO (Handle, HostName, PortNumber)
> >
> > Unfortunately, this is a blocking function, which means that
> > the whole program blocks when it is waiting for a
> > connection.
> [..]
> > Ideally, I would like to integrate this with the function
> > "hSelect" from the Select module.
>
> man 2 accept on my Linux says:
>
> In order to be notified of incoming connections on a
> socket, you can use select(2) or poll(2). A readable
> event will be delivered when a new connection is attempted
> and you may then call accept to get a socket for that con-
> nection.
>
> So I imagine if you passed the socket as the first arg to
> Select.hSelect, you'd get what you want.
> SocketPrim.socketToHandle claims to do the required conversion.
>
> disclaimer: I haven't tried this.
Strange, I haven't received the original message in this thread yet (I
read it from the archives).
'accept' doesn't block the whole program, it only blocks the current
thread - it's designed to be well-behaved in a multi-threaded program.
If you need the select() behaviour, I recommend using multiple threads
and let GHC's RTS handle the I/O multiplexing.
You mentioned that you weren't using concurrency for a good reason -
care to elaborate?
Cheers,
Simon
_______________________________________________
Glasgow-haskell-users mailing list
[EMAIL PROTECTED]
http://www.haskell.org/mailman/listinfo/glasgow-haskell-users