diff --git a/src/Skat/AI/Server.hs b/src/Skat/AI/Server.hs index a0ac766..48ec7dc 100644 --- a/src/Skat/AI/Server.hs +++ b/src/Skat/AI/Server.hs @@ -48,13 +48,18 @@ initServer :: Net.PortNumber -> Buffering -> OnReceive -> IO ServerEnv initServer port buffermode handler = do sock <- Net.socket Net.AF_INET Net.Stream 0 Net.setSocketOption sock Net.ReuseAddr 1 - Net.bind sock (Net.SockAddrInet port Net.iNADDR_ANY) + addr <- Net.addrAddress <$> resolve + Net.bind sock addr Net.listen sock 5 chan <- newChan forkIO $ forever $ do msg <- readChan chan -- clearing the main channel return () return (ServerEnv buffermode sock chan handler) + where resolve = do + let hints = Net.defaultHints { Net.addrSocketType = Net.Stream } + addrs <- Net.getAddrInfo (Just hints) (Just "127.0.0.1") (Just $ show port) + return $ head addrs close :: ServerEnv -> IO () close = Net.close . socket