|
| Network.Socket | | Portability | portable | | Stability | provisional | | Maintainer | libraries@haskell.org |
|
|
|
|
|
| Description |
The Network.Socket module is for when you want full control over
sockets. Essentially the entire C socket API is exposed through
this module; in general the operations follow the behaviour of the C
functions of the same name (consult your favourite Unix networking book).
A higher level interface to networking operations is provided
through the module Network.
|
|
| Synopsis |
|
|
|
|
| Types |
|
| data Socket |
|
|
| data Family |
Address Families.
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 | |
| | Instances | |
|
|
| data SocketType |
Socket Types.
This data type might have different constructors depending on what is
supported by the operating system. | | Constructors | | NoSocketType | | | Stream | | | Datagram | | | Raw | | | RDM | | | SeqPacket | |
| | Instances | |
|
|
| data SockAddr |
|
|
| data SocketStatus |
| Constructors | | NotConnected | | | Bound | | | Listening | | | Connected | |
| | Instances | |
|
|
| type HostAddress = Word32 |
|
| data ShutdownCmd |
| Constructors | | ShutdownReceive | | | ShutdownSend | | | ShutdownBoth | |
|
|
|
| type ProtocolNumber = CInt |
|
| newtype PortNumber |
|
|
| Socket Operations |
|
| socket :: Family -> SocketType -> ProtocolNumber -> IO Socket |
|
| socketPair :: Family -> SocketType -> ProtocolNumber -> IO (Socket, Socket) |
|
| connect :: Socket -> SockAddr -> IO () |
|
| bindSocket :: Socket -> SockAddr -> IO () |
|
| listen :: Socket -> Int -> IO () |
|
| accept :: Socket -> IO (Socket, SockAddr) |
|
| getPeerName :: Socket -> IO SockAddr |
|
| getSocketName :: Socket -> IO SockAddr |
|
| getPeerCred :: Socket -> IO (CUInt, CUInt, CUInt) |
Returns the processID, userID and groupID of the socket's peer.
Only available on platforms that support SO_PEERCRED on domain sockets. |
|
| socketPort :: Socket -> IO PortNumber |
|
| socketToHandle :: Socket -> IOMode -> IO Handle |
|
| sendTo :: Socket -> String -> SockAddr -> IO Int |
|
| recvFrom :: Socket -> Int -> IO (String, Int, SockAddr) |
|
| send :: Socket -> String -> IO Int |
|
| recv :: Socket -> Int -> IO String |
|
| inet_addr :: String -> IO HostAddress |
|
| inet_ntoa :: HostAddress -> IO String |
|
| shutdown :: Socket -> ShutdownCmd -> IO () |
|
| sClose :: Socket -> IO () |
|
| Predicates on sockets |
|
| sIsConnected :: Socket -> IO Bool |
|
| sIsBound :: Socket -> IO Bool |
|
| sIsListening :: Socket -> IO Bool |
|
| sIsReadable :: Socket -> IO Bool |
|
| sIsWritable :: Socket -> IO Bool |
|
| Socket options |
|
| data SocketOption |
| Constructors | | DummySocketOption__ | | | Debug | | | ReuseAddr | | | Type | | | SoError | | | DontRoute | | | Broadcast | | | SendBuffer | | | RecvBuffer | | | KeepAlive | | | OOBInline | | | TimeToLive | | | MaxSegment | | | NoDelay | | | Linger | | | RecvLowWater | | | SendLowWater | | | RecvTimeOut | | | SendTimeOut | |
|
|
|
| getSocketOption :: Socket -> SocketOption -> IO Int |
|
| setSocketOption :: Socket -> SocketOption -> Int -> IO () |
|
| File descriptor transmission |
|
| sendFd :: Socket -> CInt -> IO () |
|
| recvFd :: Socket -> IO CInt |
|
| sendAncillary :: Socket -> Int -> Int -> Int -> Ptr a -> Int -> IO () |
|
| recvAncillary :: Socket -> Int -> Int -> IO (Int, Int, Ptr a, Int) |
|
| Special Constants |
|
| aNY_PORT :: PortNumber |
|
| iNADDR_ANY :: HostAddress |
|
| sOMAXCONN :: Int |
|
| sOL_SOCKET :: Int |
|
| sCM_RIGHTS :: Int |
|
| maxListenQueue :: Int |
|
| Initialisation |
|
| withSocketsDo :: IO a -> IO a |
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.
|
|
| Very low level operations |
|
| fdSocket :: Socket -> CInt |
|
| mkSocket :: CInt -> Family -> SocketType -> ProtocolNumber -> SocketStatus -> IO Socket |
|
| Internal |
|
| The following are exported ONLY for use in the BSD module and
should not be used anywhere else. |
|
| packFamily :: Family -> CInt |
|
| unpackFamily :: CInt -> Family |
|
| packSocketType :: SocketType -> CInt |
|
| throwSocketErrorIfMinus1_ :: Num a => String -> IO a -> IO () |
|
| Produced by Haddock version 0.6 |