import Control.Applicative import Control.Monad import System.IO import System.Exit import System.Environment import qualified System.ZMQ as ZMQ import qualified Data.ByteString as SB main :: IO () main = do args <- getArgs when (length args /= 1) $ do hPutStrLn stderr usage exitFailure ZMQ.withContext 1 $ \c -> ZMQ.withSocket c ZMQ.Rep $ \s -> do let bindTo = head args toPoll = [ZMQ.S s ZMQ.In] ZMQ.bind s bindTo forever $ ZMQ.poll toPoll 1000000 >>= receive where receive [] = return () receive ((ZMQ.S s e):ss) = do msg <- ZMQ.receive s [] ZMQ.send s msg [] receive ss usage :: String usage = "usage: poll "