D7net
Home
Console
Upload
information
Create File
Create Folder
About
Tools
:
/
home
/
tattooscyy
/
api
/
vendor
/
scrivo
/
highlight.php
/
test
/
detect
/
haskell
/
Filename :
default.txt
back
Copy
{-# LANGUAGE TypeSynonymInstances #-} module Network.UDP ( DataPacket(..) , openBoundUDPPort , openListeningUDPPort , pingUDPPort , sendUDPPacketTo , recvUDPPacket , recvUDPPacketFrom ) where import qualified Data.ByteString as Strict (ByteString, concat, singleton) import qualified Data.ByteString.Lazy as Lazy (ByteString, toChunks, fromChunks) import Data.ByteString.Char8 (pack, unpack) import Network.Socket hiding (sendTo, recv, recvFrom) import Network.Socket.ByteString (sendTo, recv, recvFrom) -- Type class for converting StringLike types to and from strict ByteStrings class DataPacket a where toStrictBS :: a -> Strict.ByteString fromStrictBS :: Strict.ByteString -> a instance DataPacket Strict.ByteString where toStrictBS = id {-# INLINE toStrictBS #-} fromStrictBS = id {-# INLINE fromStrictBS #-} openBoundUDPPort :: String -> Int -> IO Socket openBoundUDPPort uri port = do s <- getUDPSocket bindAddr <- inet_addr uri let a = SockAddrInet (toEnum port) bindAddr bindSocket s a return s pingUDPPort :: Socket -> SockAddr -> IO () pingUDPPort s a = sendTo s (Strict.singleton 0) a >> return ()