Portability | portable |
---|---|
Stability | provisional |
Maintainer | libraries@haskell.org |
A module containing semi-public Network.Socket
internals.
Modules which extend the Network.Socket
module will need to use
this module while ideally most users will be able to make do with
the public interface.
- type HostAddress = Word32
- type HostAddress6 = (Word32, Word32, Word32, Word32)
- type FlowInfo = Word32
- type ScopeID = Word32
- newtype PortNumber = PortNum Word16
- data SockAddr
- peekSockAddr :: Ptr SockAddr -> IO SockAddr
- pokeSockAddr :: Ptr a -> SockAddr -> IO ()
- sizeOfSockAddr :: SockAddr -> Int
- sizeOfSockAddrByFamily :: Family -> Int
- withSockAddr :: SockAddr -> (Ptr SockAddr -> Int -> IO a) -> IO a
- withNewSockAddr :: Family -> (Ptr SockAddr -> Int -> IO a) -> IO a
- data Family
- throwSocketError :: String -> IO a
- throwSocketErrorIfMinus1_ :: Num a => String -> IO a -> IO ()
- throwSocketErrorIfMinus1Retry :: Num a => String -> IO a -> IO a
- throwSocketErrorIfMinus1RetryMayBlock :: Num a => String -> IO b -> IO a -> IO a
- withSocketsDo :: IO a -> IO a
- zeroMemory :: Ptr a -> CSize -> IO ()
Socket addresses
type HostAddress = Word32Source
newtype PortNumber Source
pokeSockAddr :: Ptr a -> SockAddr -> IO ()Source
Write the given SockAddr
to the given memory location.
sizeOfSockAddr :: SockAddr -> IntSource
Protocol families
This data type might have different constructors depending on what is supported by the operating system.
Socket error functions
Throw an IOError
corresponding to the current socket error.
Guards for socket operations that may fail
throwSocketErrorIfMinus1_Source
:: Num a | |
=> String | textual description of the location |
-> IO a | the |
-> IO () |
Throw an IOError
corresponding to the current socket error if
the IO action returns a result of -1
. Discards the result of the
IO action after error handling.
throwSocketErrorIfMinus1RetrySource
:: Num a | |
=> String | textual description of the location |
-> IO a | the |
-> IO a |
Throw an IOError
corresponding to the current socket error if
the IO action returns a result of -1
, but retries in case of an
interrupted operation.
throwSocketErrorIfMinus1RetryMayBlockSource
:: Num a | |
=> String | textual description of the location |
-> IO b | action to execute before retrying if an immediate retry would block |
-> IO a | the |
-> IO a |
Throw an IOError
corresponding to the current socket error if
the IO action returns a result of -1
, but retries in case of an
interrupted operation. Checks for operations that would block and
executes an alternative action before retrying in that case.
Initialization
withSocketsDo :: IO a -> IO aSource
On Windows operating systems, the networking subsystem has to be
initialised using withSocketsDo
before any networking operations can
be used. eg.
main = withSocketsDo $ do {...}
Although this is only strictly necessary on Windows platforms, it is harmless on other platforms, so for portability it is good practice to use it all the time.