From 6958fc2f9852818773b94666f72c633d4ab26abf Mon Sep 17 00:00:00 2001 From: Trolli Schmittlauch Date: Sun, 5 Apr 2020 19:58:33 +0200 Subject: [PATCH] some tweaks to the demo UDP server --- Hash2Pub/demoserver.hs | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/Hash2Pub/demoserver.hs b/Hash2Pub/demoserver.hs index 50a6ccc..fe1debf 100644 --- a/Hash2Pub/demoserver.hs +++ b/Hash2Pub/demoserver.hs @@ -1,7 +1,8 @@ {-# LANGUAGE OverloadedStrings #-} + module Main where -import Network.Socket hiding (sendTo, recvFrom) +import Network.Socket hiding (send, sendTo, recv, recvFrom) import Network.Socket.ByteString import Control.Concurrent import Control.Exception @@ -15,19 +16,20 @@ import qualified Data.ByteString as BS main = do sock <- socket AF_INET6 Datagram defaultProtocol let hints = defaultHints { addrFamily = AF_INET6, addrSocketType = Datagram} - addrInfos <- getAddrInfo (Just hints) (Just "::1") (Just "7331") - let serverAddr = addrAddress . head $ addrInfos + serverAddr <- addrAddress . head <$> getAddrInfo (Just hints) (Just "::1") (Just "7331") print serverAddr bind sock serverAddr print sock forever $ do receivedStuff <- recvFrom sock 65535 -- blocks - forkIO $ bracket newSendSocket close' (serveReceive receivedStuff) - return () + forkIO $ bracket newSendSocket close (serveReceive receivedStuff) +serveReceive :: (BS.ByteString, SockAddr) -> Socket -> IO () serveReceive (msg, fromAddr) sendSocket = do + print sendSocket putStrLn $ "Got message " ++ show msg ++ " from " ++ show fromAddr - sendTo sendSocket ("Hi, thx for " `BS.append` msg) fromAddr + sentBytes <- sendTo sendSocket ("Hi, thx for " `BS.append` msg) fromAddr + putStrLn $ "sent response of " ++ show sentBytes ++ "bytes" return () newSendSocket :: IO Socket