packages feed

haskell-openflow-0.0.0.1: examples/echo-server.hs

import Control.Monad
import qualified Data.ByteString as BS
import Network.Socket hiding (recv)
import Network.Socket.ByteString

main :: IO ()
main = do
  addrinfos <- getAddrInfo
               (Just (defaultHints {addrFlags = [AI_PASSIVE]}))
               Nothing (Just "9999")
  let serveaddr = head addrinfos
  sock <- socket (addrFamily serveaddr) Stream defaultProtocol
  bindSocket sock (addrAddress serveaddr)
  listen sock 4
  (conn, caddr) <- accept sock
  talk conn
  sClose conn
  sClose sock
  main
    where
      talk :: Socket -> IO ()
      talk conn = do
        msg <- recv conn 4096
        unless (BS.null msg) $ sendAll conn msg >> talk conn