Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
dist-newstyle/
.stack-work/
4 changes: 4 additions & 0 deletions cabal.project
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
packages: .

package network-multicast
flags: +examples
5 changes: 2 additions & 3 deletions examples/receiver.hs
Original file line number Diff line number Diff line change
Expand Up @@ -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
7 changes: 3 additions & 4 deletions examples/sender.hs
Original file line number Diff line number Diff line change
Expand Up @@ -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
30 changes: 28 additions & 2 deletions network-multicast.cabal
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
cabal-version: 2.0
name: network-multicast
version: 0.3.2
copyright: 2008-2019 Audrey Tang
Expand All @@ -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