module Network.Run.UDP (
runUDPClient
, runUDPServer
) where
import qualified Control.Exception as E
import Network.Socket
import Network.Run.Core
runUDPClient :: String -> String -> (Socket -> SockAddr -> IO a) -> IO a
runUDPClient host port client = withSocketsDo $ do
addr <- resolve Datagram (Just host) port False
let sockAddr = addrAddress addr
E.bracket (openSocket addr) close $ \sock -> client sock sockAddr
runUDPServer :: Maybe HostName -> ServiceName -> (Socket -> IO a) -> IO a
runUDPServer mhost port server = withSocketsDo $ do
addr <- resolve Datagram mhost port True
E.bracket (openServerSocket addr) close server