-------------------------------------------------- -- Simple Server -- Chris Reade, Nov 2000 -- Based on example by Hermann Oliveira Rodrigues -------------------------------------------------- module Main (main) where import System import IO import Time import Socket main :: IO () main = do prog <- getProgName args <- getArgs if (length args /= 1) then do putStrLn ("Use: " ++ prog ++ " ") exitWith (ExitFailure (-1)) else return () let port = read (args !! 0) :: Int in server (PortNumber (mkPortNumber port)) -- The server function creates a socket to listen on the port and -- loops to service requests continuously server :: PortID -> IO () server port = do socket <- listenOn port -- Fique em `loop' atendendo requisicoes. let loop = do (sh, host, portid) <- accept socket procRequest sh loop in loop -- The procRequest function deals with an individual request procRequest :: Handle -> IO () procRequest hd = do clock <- getClockTime calendar <- toCalendarTime clock hPutStrLn hd (calendarTimeToString calendar) hFlush hd hClose hd