import Network (listenOn, accept, PortID(..), Socket)
import System.IO (hSetBuffering, hGetLine, hPutStrLn, BufferMode(..), Handle)
import Control.Concurrent (forkIO)
echoImpl :: Handle -> IO ()
echoImpl client = do
line <- hGetLine client
hPutStrLn client line
echoImpl client
clientHandler :: Socket -> IO ()
clientHandler sock = do
(client, _, _) <- accept sock
hSetBuffering client NoBuffering
forkIO $ echoImpl client
clientHandler sock
felix :: IO ()
felix = do
sock <- listenOn $ PortNumber 5002
putStrLn $ "Echo server started .."
clientHandler sock