network-2.2.1.4: Networking-related facilitiesSource codeContentsIndex
Network.Socket.Internal
Portabilityportable
Stabilityprovisional
Maintainerlibraries@haskell.org
Contents
Socket addresses
Protocol families
Socket error functions
Guards for socket operations that may fail
Initialization
Description
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.
Synopsis
type HostAddress = Word32
type HostAddress6 = (Word32, Word32, Word32, Word32)
type FlowInfo = Word32
type ScopeID = Word32
newtype PortNumber = PortNum Word16
data SockAddr
= SockAddrInet PortNumber HostAddress
| SockAddrInet6 PortNumber FlowInfo HostAddress6 ScopeID
| SockAddrUnix String
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
= AF_UNSPEC
| AF_UNIX
| AF_INET
| AF_INET6
| AF_SNA
| AF_DECnet
| AF_APPLETALK
| AF_ROUTE
| AF_X25
| AF_AX25
| AF_IPX
| AF_ISDN
| AF_NETROM
| AF_BRIDGE
| AF_ATMPVC
| AF_ROSE
| AF_NETBEUI
| AF_SECURITY
| AF_PACKET
| AF_ASH
| AF_ECONET
| AF_ATMSVC
| AF_IRDA
| AF_PPPOX
| AF_WANPIPE
| AF_BLUETOOTH
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
Socket addresses
type HostAddress = Word32Source
type HostAddress6 = (Word32, Word32, Word32, Word32)Source
type FlowInfo = Word32Source
type ScopeID = Word32Source
newtype PortNumber Source
Constructors
PortNum Word16
show/hide Instances
data SockAddr Source
Constructors
SockAddrInet PortNumber HostAddress
SockAddrInet6 PortNumber FlowInfo HostAddress6 ScopeID
SockAddrUnix String
show/hide Instances
peekSockAddr :: Ptr SockAddr -> IO SockAddrSource
Read a SockAddr from the given memory location.
pokeSockAddr :: Ptr a -> SockAddr -> IO ()Source
Write the given SockAddr to the given memory location.
sizeOfSockAddr :: SockAddr -> IntSource
Computes the storage requirements (in bytes) of the given SockAddr. This function differs from sizeOf in that the value of the argument is used.
sizeOfSockAddrByFamily :: Family -> IntSource
Computes the storage requirements (in bytes) required for a SockAddr with the given Family.
withSockAddr :: SockAddr -> (Ptr SockAddr -> Int -> IO a) -> IO aSource
Use a SockAddr with a function requiring a pointer to a SockAddr and the length of that SockAddr.
withNewSockAddr :: Family -> (Ptr SockAddr -> Int -> IO a) -> IO aSource
Create a new SockAddr for use with a function requiring a pointer to a SockAddr and the length of that SockAddr.
Protocol families
data Family Source
This data type might have different constructors depending on what is supported by the operating system.
Constructors
AF_UNSPEC
AF_UNIX
AF_INET
AF_INET6
AF_SNA
AF_DECnet
AF_APPLETALK
AF_ROUTE
AF_X25
AF_AX25
AF_IPX
AF_ISDN
AF_NETROM
AF_BRIDGE
AF_ATMPVC
AF_ROSE
AF_NETBEUI
AF_SECURITY
AF_PACKET
AF_ASH
AF_ECONET
AF_ATMSVC
AF_IRDA
AF_PPPOX
AF_WANPIPE
AF_BLUETOOTH
show/hide Instances
Socket error functions
throwSocketErrorSource
::
=> Stringtextual description of the error location
-> IO a
Throw an IOError corresponding to the current socket error.
Guards for socket operations that may fail
throwSocketErrorIfMinus1_Source
:: Num a
=> Stringtextual description of the location
-> IO athe IO operation to be executed
-> 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
=> Stringtextual description of the location
-> IO athe IO operation to be executed
-> 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
=> Stringtextual description of the location
-> IO baction to execute before retrying if an immediate retry would block
-> IO athe IO operation to be executed
-> 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.

Produced by Haddock version 2.4.2