{- | Module : Network.Socket.Compat Copyright : 2009 Felix Martini License : BSD-style (see LICENSE for license terms) Maintainer : felix@felixmartini.com Stability : Experimental Functions in this module are compatible with functions in the Network.Socket module but use I/O functions from the winio package. -} module Network.Socket.Compat where import Network.Socket (Family, ProtocolNumber, Socket, SocketType, SockAddr) import qualified Network.Socket as Socket import qualified System.Windows.IO as IO socket :: Family -> SocketType -> ProtocolNumber -> IO Socket socket fam sock_type proto_num = do sock <- Socket.socket fam sock_type proto_num IO.associateSocketWithPort sock return sock accept :: Socket -> IO (Socket, SockAddr) accept sock = do (client_sock, client_addr) <- Socket.accept sock IO.associateSocketWithPort client_sock return (client_sock, client_addr)