[Haskell-beginners] TCP Server
Raphael Päbst
raphael.paebst at googlemail.com
Mon May 16 15:42:13 CEST 2011
Thanks for the enlightenment!
I'll try to work out if I need STM or just MVar.
On 5/16/11, Ertugrul Soeylemez <es at ertes.de> wrote:
> Raphael Päbst <raphael.paebst at googlemail.com> wrote:
>
>> I need a TCP server for my current project and am now wondering if I
>> have to write it from scratch or if there is a package out there that
>> lets me avoid this. I have seen examples of TCP servers for example in
>> the Real World Haskell book, but they are a bit confusing to me at the
>> moment, so I'd like to avoid tackling this one.
>
> TCP servers are surprisingly easy to write. You will want to learn how
> to write concurrent programs in Haskell first, then you would just
> listen on a port and accept connections in a loop like this:
>
> import Control.Exception
> import Network
> import System.IO
>
> handleClient :: Handle -> IO ()
> handleClient h = ...
>
> server :: IO ()
> server = do
> socket <- listenOn (PortNumber 4000)
> forever $ do
> (h, hostname, port) <- accept socket
> forkIO $ handleClient h `finally` hClose h
>
> This is how it works basically. Communication between the threads can
> be carried out by using concurrency constructs like MVar and/or by using
> software transactional memory (STM). For really elegant concurrent
> applications you should also learn how to use STM.
>
> For learning concurrent programming I found the Control.Concurrent
> documentation to be sufficient, but YMMV. For STM you will find good
> references in HaskellWiki's STM page.
>
>
> Greets,
> Ertugrul
>
>
> --
> nightmare = unsafePerformIO (getWrongWife >>= sex)
> http://ertes.de/
>
>
>
> _______________________________________________
> Beginners mailing list
> Beginners at haskell.org
> http://www.haskell.org/mailman/listinfo/beginners
>
More information about the Beginners
mailing list