From 044c5fdfc2d547859d6d41045d5f5e3d354fca34 Mon Sep 17 00:00:00 2001 From: IC Rainbow Date: Sun, 22 Oct 2023 12:16:40 +0300 Subject: [PATCH] Update examples --- .gitignore | 2 ++ cabal.project | 4 ++++ examples/receiver.hs | 5 ++--- examples/sender.hs | 7 +++---- network-multicast.cabal | 30 ++++++++++++++++++++++++++++-- 5 files changed, 39 insertions(+), 9 deletions(-) create mode 100644 .gitignore create mode 100644 cabal.project diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..b065d02 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +dist-newstyle/ +.stack-work/ diff --git a/cabal.project b/cabal.project new file mode 100644 index 0000000..d932270 --- /dev/null +++ b/cabal.project @@ -0,0 +1,4 @@ +packages: . + +package network-multicast + flags: +examples diff --git a/examples/receiver.hs b/examples/receiver.hs index 18c56ba..73eca94 100644 --- a/examples/receiver.hs +++ b/examples/receiver.hs @@ -2,12 +2,11 @@ import Network.Socket (withSocketsDo) import qualified Data.ByteString.Char8 as C import Network.Socket.ByteString (recvFrom) import Network.Multicast +import Control.Monad (forever) main :: IO () main = withSocketsDo $ do sock <- multicastReceiver "224.0.0.99" 9999 - let loop = do + forever $ do (msg, addr) <- recvFrom sock 1024 putStrLn $ "Recv [" ++ show addr ++ "]: " ++ C.unpack msg - loop - loop diff --git a/examples/sender.hs b/examples/sender.hs index 81b43aa..6046204 100644 --- a/examples/sender.hs +++ b/examples/sender.hs @@ -5,14 +5,13 @@ import Network.Multicast import Data.Time.Clock (getCurrentTime) import Control.Concurrent (threadDelay) +import Control.Monad (forever) main :: IO () main = withSocketsDo $ do (sock, addr) <- multicastSender "224.0.0.99" 9999 - let loop = do + forever $ do msg <- fmap show getCurrentTime sendTo sock (C.pack msg) addr putStrLn $ "Send [" ++ show addr ++ "]: " ++ msg - threadDelay 100000 - loop - loop + threadDelay 1000000 diff --git a/network-multicast.cabal b/network-multicast.cabal index 1bc08bf..0a16b9a 100644 --- a/network-multicast.cabal +++ b/network-multicast.cabal @@ -1,3 +1,4 @@ +cabal-version: 2.0 name: network-multicast version: 0.3.2 copyright: 2008-2019 Audrey Tang @@ -11,17 +12,42 @@ description: The "Network.Multicast" module is for sending stability: experimental build-type: Simple category: Network -cabal-version: >= 1.8 extra-source-files: examples/sender.hs examples/receiver.hs ChangeLog +flag examples + description: + Build executable examples. + default: + False + manual: + True + library - extensions: ForeignFunctionInterface, CPP, FlexibleInstances + default-extensions: ForeignFunctionInterface, CPP, FlexibleInstances exposed-modules: Network.Multicast build-depends: base >= 4 && < 5, network, network-bsd hs-source-dirs: src if os(win32) extra-libraries: ws2_32 +executable receiver + main-is: receiver.hs + hs-source-dirs: examples + default-language: Haskell2010 + if !flag(examples) + buildable: False + else + build-depends: base, bytestring, network, network-multicast + +executable sender + main-is: sender.hs + hs-source-dirs: examples + default-language: Haskell2010 + if !flag(examples) + buildable: False + else + build-depends: base, bytestring, network, network-multicast, time + source-repository head type: git location: http://github.com/audreyt/network-multicast