Sophie

Sophie

distrib > Mandriva > 2010.0 > i586 > media > contrib-release > by-pkgid > 1f2b142b9d2ef4849a6f5316fa1c5b12 > files > 2643

ghc-6.10.4-1mdv2010.0.i586.rpm

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!--Rendered using the Haskell Html Library v0.2-->
<HTML
><HEAD
><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8"
><TITLE
>Network.Socket</TITLE
><LINK HREF="haddock.css" REL="stylesheet" TYPE="text/css"
><SCRIPT SRC="haddock-util.js" TYPE="text/javascript"
></SCRIPT
><SCRIPT TYPE="text/javascript"
>window.onload = function () {setSynopsis("mini_Network-Socket.html")};</SCRIPT
></HEAD
><BODY
><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
><TR
><TD CLASS="topbar"
><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
><TR
><TD
><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" "
></TD
><TD CLASS="title"
>network-2.2.1.2: Networking-related facilities</TD
><TD CLASS="topbut"
><A HREF="index.html"
>Contents</A
></TD
><TD CLASS="topbut"
><A HREF="doc-index.html"
>Index</A
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="modulebar"
><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
><TR
><TD
><FONT SIZE="6"
>Network.Socket</FONT
></TD
><TD ALIGN="right"
><TABLE CLASS="narrow" CELLSPACING="0" CELLPADDING="0"
><TR
><TD CLASS="infohead"
>Portability</TD
><TD CLASS="infoval"
>portable</TD
></TR
><TR
><TD CLASS="infohead"
>Stability</TD
><TD CLASS="infoval"
>provisional</TD
></TR
><TR
><TD CLASS="infohead"
>Maintainer</TD
><TD CLASS="infoval"
>libraries@haskell.org</TD
></TR
></TABLE
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD
><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
><TR
><TD CLASS="section4"
><B
>Contents</B
></TD
></TR
><TR
><TD
><DL
><DT
><A HREF="#1"
>Types
</A
></DT
><DT
><A HREF="#2"
>Address operations
</A
></DT
><DT
><A HREF="#3"
>Socket Operations
</A
></DT
><DD
><DL
><DT
><A HREF="#4"
>Predicates on sockets
</A
></DT
></DL
></DD
><DT
><A HREF="#5"
>Socket options
</A
></DT
><DT
><A HREF="#6"
>File descriptor transmission
</A
></DT
><DT
><A HREF="#7"
>Special Constants
</A
></DT
><DT
><A HREF="#8"
>Initialisation
</A
></DT
><DT
><A HREF="#9"
>Very low level operations
</A
></DT
><DT
><A HREF="#10"
>Internal
</A
></DT
></DL
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="section1"
>Description</TD
></TR
><TR
><TD CLASS="doc"
><P
>The <A HREF="Network-Socket.html"
>Network.Socket</A
> 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).
</P
><P
>A higher level interface to networking operations is provided
 through the module <A HREF="Network.html"
>Network</A
>.
</P
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="section1"
>Synopsis</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="body"
><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
><TR
><TD CLASS="decl"
><SPAN CLASS="keyword"
>data</SPAN
>  <A HREF="#t%3ASocket"
>Socket</A
>  = <A HREF="#v%3AMkSocket"
>MkSocket</A
> <A HREF="../base/Foreign-C-Types.html#t%3ACInt"
>CInt</A
> <A HREF="Network-Socket.html#t%3AFamily"
>Family</A
> <A HREF="Network-Socket.html#t%3ASocketType"
>SocketType</A
> <A HREF="Network-Socket.html#t%3AProtocolNumber"
>ProtocolNumber</A
> (<A HREF="../base/Control-Concurrent-MVar.html#t%3AMVar"
>MVar</A
> <A HREF="Network-Socket.html#t%3ASocketStatus"
>SocketStatus</A
>)</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
><TR
><TD CLASS="decl"
><SPAN CLASS="keyword"
>data</SPAN
>  <A HREF="#t%3AFamily"
>Family</A
>  </TD
></TR
><TR
><TD CLASS="body"
><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
><TR
><TD CLASS="decl"
>= <A HREF="#v%3AAF_UNSPEC"
>AF_UNSPEC</A
></TD
></TR
><TR
><TD CLASS="decl"
>| <A HREF="#v%3AAF_UNIX"
>AF_UNIX</A
></TD
></TR
><TR
><TD CLASS="decl"
>| <A HREF="#v%3AAF_INET"
>AF_INET</A
></TD
></TR
><TR
><TD CLASS="decl"
>| <A HREF="#v%3AAF_INET6"
>AF_INET6</A
></TD
></TR
><TR
><TD CLASS="decl"
>| <A HREF="#v%3AAF_SNA"
>AF_SNA</A
></TD
></TR
><TR
><TD CLASS="decl"
>| <A HREF="#v%3AAF_DECnet"
>AF_DECnet</A
></TD
></TR
><TR
><TD CLASS="decl"
>| <A HREF="#v%3AAF_APPLETALK"
>AF_APPLETALK</A
></TD
></TR
><TR
><TD CLASS="decl"
>| <A HREF="#v%3AAF_ROUTE"
>AF_ROUTE</A
></TD
></TR
><TR
><TD CLASS="decl"
>| <A HREF="#v%3AAF_X25"
>AF_X25</A
></TD
></TR
><TR
><TD CLASS="decl"
>| <A HREF="#v%3AAF_AX25"
>AF_AX25</A
></TD
></TR
><TR
><TD CLASS="decl"
>| <A HREF="#v%3AAF_IPX"
>AF_IPX</A
></TD
></TR
><TR
><TD CLASS="decl"
>| <A HREF="#v%3AAF_ISDN"
>AF_ISDN</A
></TD
></TR
><TR
><TD CLASS="decl"
>| <A HREF="#v%3AAF_NETROM"
>AF_NETROM</A
></TD
></TR
><TR
><TD CLASS="decl"
>| <A HREF="#v%3AAF_BRIDGE"
>AF_BRIDGE</A
></TD
></TR
><TR
><TD CLASS="decl"
>| <A HREF="#v%3AAF_ATMPVC"
>AF_ATMPVC</A
></TD
></TR
><TR
><TD CLASS="decl"
>| <A HREF="#v%3AAF_ROSE"
>AF_ROSE</A
></TD
></TR
><TR
><TD CLASS="decl"
>| <A HREF="#v%3AAF_NETBEUI"
>AF_NETBEUI</A
></TD
></TR
><TR
><TD CLASS="decl"
>| <A HREF="#v%3AAF_SECURITY"
>AF_SECURITY</A
></TD
></TR
><TR
><TD CLASS="decl"
>| <A HREF="#v%3AAF_PACKET"
>AF_PACKET</A
></TD
></TR
><TR
><TD CLASS="decl"
>| <A HREF="#v%3AAF_ASH"
>AF_ASH</A
></TD
></TR
><TR
><TD CLASS="decl"
>| <A HREF="#v%3AAF_ECONET"
>AF_ECONET</A
></TD
></TR
><TR
><TD CLASS="decl"
>| <A HREF="#v%3AAF_ATMSVC"
>AF_ATMSVC</A
></TD
></TR
><TR
><TD CLASS="decl"
>| <A HREF="#v%3AAF_IRDA"
>AF_IRDA</A
></TD
></TR
><TR
><TD CLASS="decl"
>| <A HREF="#v%3AAF_PPPOX"
>AF_PPPOX</A
></TD
></TR
><TR
><TD CLASS="decl"
>| <A HREF="#v%3AAF_WANPIPE"
>AF_WANPIPE</A
></TD
></TR
><TR
><TD CLASS="decl"
>| <A HREF="#v%3AAF_BLUETOOTH"
>AF_BLUETOOTH</A
></TD
></TR
></TABLE
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
><TR
><TD CLASS="decl"
><SPAN CLASS="keyword"
>data</SPAN
>  <A HREF="#t%3ASocketType"
>SocketType</A
>  </TD
></TR
><TR
><TD CLASS="body"
><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
><TR
><TD CLASS="decl"
>= <A HREF="#v%3ANoSocketType"
>NoSocketType</A
></TD
></TR
><TR
><TD CLASS="decl"
>| <A HREF="#v%3AStream"
>Stream</A
></TD
></TR
><TR
><TD CLASS="decl"
>| <A HREF="#v%3ADatagram"
>Datagram</A
></TD
></TR
><TR
><TD CLASS="decl"
>| <A HREF="#v%3ARaw"
>Raw</A
></TD
></TR
><TR
><TD CLASS="decl"
>| <A HREF="#v%3ARDM"
>RDM</A
></TD
></TR
><TR
><TD CLASS="decl"
>| <A HREF="#v%3ASeqPacket"
>SeqPacket</A
></TD
></TR
></TABLE
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
><TR
><TD CLASS="decl"
><SPAN CLASS="keyword"
>data</SPAN
>  <A HREF="#t%3ASockAddr"
>SockAddr</A
>  </TD
></TR
><TR
><TD CLASS="body"
><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
><TR
><TD CLASS="decl"
>= <A HREF="#v%3ASockAddrInet"
>SockAddrInet</A
> <A HREF="Network-Socket.html#t%3APortNumber"
>PortNumber</A
> <A HREF="Network-Socket.html#t%3AHostAddress"
>HostAddress</A
></TD
></TR
><TR
><TD CLASS="decl"
>| <A HREF="#v%3ASockAddrInet6"
>SockAddrInet6</A
> <A HREF="Network-Socket.html#t%3APortNumber"
>PortNumber</A
> <A HREF="Network-Socket.html#t%3AFlowInfo"
>FlowInfo</A
> <A HREF="Network-Socket.html#t%3AHostAddress6"
>HostAddress6</A
> <A HREF="Network-Socket.html#t%3AScopeID"
>ScopeID</A
></TD
></TR
><TR
><TD CLASS="decl"
>| <A HREF="#v%3ASockAddrUnix"
>SockAddrUnix</A
> <A HREF="../base/Data-Char.html#t%3AString"
>String</A
></TD
></TR
></TABLE
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
><TR
><TD CLASS="decl"
><SPAN CLASS="keyword"
>data</SPAN
>  <A HREF="#t%3ASocketStatus"
>SocketStatus</A
>  </TD
></TR
><TR
><TD CLASS="body"
><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
><TR
><TD CLASS="decl"
>= <A HREF="#v%3ANotConnected"
>NotConnected</A
></TD
></TR
><TR
><TD CLASS="decl"
>| <A HREF="#v%3ABound"
>Bound</A
></TD
></TR
><TR
><TD CLASS="decl"
>| <A HREF="#v%3AListening"
>Listening</A
></TD
></TR
><TR
><TD CLASS="decl"
>| <A HREF="#v%3AConnected"
>Connected</A
></TD
></TR
><TR
><TD CLASS="decl"
>| <A HREF="#v%3AConvertedToHandle"
>ConvertedToHandle</A
></TD
></TR
><TR
><TD CLASS="decl"
>| <A HREF="#v%3AClosed"
>Closed</A
></TD
></TR
></TABLE
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><SPAN CLASS="keyword"
>type</SPAN
> <A HREF="#t%3AHostAddress"
>HostAddress</A
> = <A HREF="../base/Data-Word.html#t%3AWord32"
>Word32</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><SPAN CLASS="keyword"
>type</SPAN
> <A HREF="#t%3AHostAddress6"
>HostAddress6</A
> = (<A HREF="../base/Data-Word.html#t%3AWord32"
>Word32</A
>, <A HREF="../base/Data-Word.html#t%3AWord32"
>Word32</A
>, <A HREF="../base/Data-Word.html#t%3AWord32"
>Word32</A
>, <A HREF="../base/Data-Word.html#t%3AWord32"
>Word32</A
>)</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><SPAN CLASS="keyword"
>type</SPAN
> <A HREF="#t%3AFlowInfo"
>FlowInfo</A
> = <A HREF="../base/Data-Word.html#t%3AWord32"
>Word32</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><SPAN CLASS="keyword"
>type</SPAN
> <A HREF="#t%3AScopeID"
>ScopeID</A
> = <A HREF="../base/Data-Word.html#t%3AWord32"
>Word32</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
><TR
><TD CLASS="decl"
><SPAN CLASS="keyword"
>data</SPAN
>  <A HREF="#t%3AShutdownCmd"
>ShutdownCmd</A
>  </TD
></TR
><TR
><TD CLASS="body"
><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
><TR
><TD CLASS="decl"
>= <A HREF="#v%3AShutdownReceive"
>ShutdownReceive</A
></TD
></TR
><TR
><TD CLASS="decl"
>| <A HREF="#v%3AShutdownSend"
>ShutdownSend</A
></TD
></TR
><TR
><TD CLASS="decl"
>| <A HREF="#v%3AShutdownBoth"
>ShutdownBoth</A
></TD
></TR
></TABLE
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><SPAN CLASS="keyword"
>type</SPAN
> <A HREF="#t%3AProtocolNumber"
>ProtocolNumber</A
> = <A HREF="../base/Foreign-C-Types.html#t%3ACInt"
>CInt</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AdefaultProtocol"
>defaultProtocol</A
> :: <A HREF="Network-Socket.html#t%3AProtocolNumber"
>ProtocolNumber</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><SPAN CLASS="keyword"
>newtype</SPAN
>  <A HREF="#t%3APortNumber"
>PortNumber</A
>  = <A HREF="#v%3APortNum"
>PortNum</A
> <A HREF="../base/Data-Word.html#t%3AWord16"
>Word16</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><SPAN CLASS="keyword"
>type</SPAN
> <A HREF="#t%3AHostName"
>HostName</A
> = <A HREF="../base/Data-Char.html#t%3AString"
>String</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><SPAN CLASS="keyword"
>type</SPAN
> <A HREF="#t%3AServiceName"
>ServiceName</A
> = <A HREF="../base/Data-Char.html#t%3AString"
>String</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><SPAN CLASS="keyword"
>data</SPAN
>  <A HREF="#t%3AAddrInfo"
>AddrInfo</A
>  = <A HREF="#v%3AAddrInfo"
>AddrInfo</A
> {<TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
><TR
><TD CLASS="recfield"
><A HREF="#v%3AaddrFlags"
>addrFlags</A
> :: [<A HREF="Network-Socket.html#t%3AAddrInfoFlag"
>AddrInfoFlag</A
>]</TD
></TR
><TR
><TD CLASS="recfield"
><A HREF="#v%3AaddrFamily"
>addrFamily</A
> :: <A HREF="Network-Socket.html#t%3AFamily"
>Family</A
></TD
></TR
><TR
><TD CLASS="recfield"
><A HREF="#v%3AaddrSocketType"
>addrSocketType</A
> :: <A HREF="Network-Socket.html#t%3ASocketType"
>SocketType</A
></TD
></TR
><TR
><TD CLASS="recfield"
><A HREF="#v%3AaddrProtocol"
>addrProtocol</A
> :: <A HREF="Network-Socket.html#t%3AProtocolNumber"
>ProtocolNumber</A
></TD
></TR
><TR
><TD CLASS="recfield"
><A HREF="#v%3AaddrAddress"
>addrAddress</A
> :: <A HREF="Network-Socket.html#t%3ASockAddr"
>SockAddr</A
></TD
></TR
><TR
><TD CLASS="recfield"
><A HREF="#v%3AaddrCanonName"
>addrCanonName</A
> :: <A HREF="../base/Data-Maybe.html#t%3AMaybe"
>Maybe</A
> <A HREF="../base/Data-Char.html#t%3AString"
>String</A
></TD
></TR
></TABLE
>}</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
><TR
><TD CLASS="decl"
><SPAN CLASS="keyword"
>data</SPAN
>  <A HREF="#t%3AAddrInfoFlag"
>AddrInfoFlag</A
>  </TD
></TR
><TR
><TD CLASS="body"
><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
><TR
><TD CLASS="decl"
>= <A HREF="#v%3AAI_ADDRCONFIG"
>AI_ADDRCONFIG</A
></TD
></TR
><TR
><TD CLASS="decl"
>| <A HREF="#v%3AAI_ALL"
>AI_ALL</A
></TD
></TR
><TR
><TD CLASS="decl"
>| <A HREF="#v%3AAI_CANONNAME"
>AI_CANONNAME</A
></TD
></TR
><TR
><TD CLASS="decl"
>| <A HREF="#v%3AAI_NUMERICHOST"
>AI_NUMERICHOST</A
></TD
></TR
><TR
><TD CLASS="decl"
>| <A HREF="#v%3AAI_NUMERICSERV"
>AI_NUMERICSERV</A
></TD
></TR
><TR
><TD CLASS="decl"
>| <A HREF="#v%3AAI_PASSIVE"
>AI_PASSIVE</A
></TD
></TR
><TR
><TD CLASS="decl"
>| <A HREF="#v%3AAI_V4MAPPED"
>AI_V4MAPPED</A
></TD
></TR
></TABLE
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AaddrInfoFlagImplemented"
>addrInfoFlagImplemented</A
> :: <A HREF="Network-Socket.html#t%3AAddrInfoFlag"
>AddrInfoFlag</A
> -&gt; <A HREF="../ghc-prim/GHC-Bool.html#t%3ABool"
>Bool</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AdefaultHints"
>defaultHints</A
> :: <A HREF="Network-Socket.html#t%3AAddrInfo"
>AddrInfo</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AgetAddrInfo"
>getAddrInfo</A
> :: <A HREF="../base/Data-Maybe.html#t%3AMaybe"
>Maybe</A
> <A HREF="Network-Socket.html#t%3AAddrInfo"
>AddrInfo</A
> -&gt; <A HREF="../base/Data-Maybe.html#t%3AMaybe"
>Maybe</A
> <A HREF="Network-Socket.html#t%3AHostName"
>HostName</A
> -&gt; <A HREF="../base/Data-Maybe.html#t%3AMaybe"
>Maybe</A
> <A HREF="Network-Socket.html#t%3AServiceName"
>ServiceName</A
> -&gt; <A HREF="../base/System-IO.html#t%3AIO"
>IO</A
> [<A HREF="Network-Socket.html#t%3AAddrInfo"
>AddrInfo</A
>]</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
><TR
><TD CLASS="decl"
><SPAN CLASS="keyword"
>data</SPAN
>  <A HREF="#t%3ANameInfoFlag"
>NameInfoFlag</A
>  </TD
></TR
><TR
><TD CLASS="body"
><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
><TR
><TD CLASS="decl"
>= <A HREF="#v%3ANI_DGRAM"
>NI_DGRAM</A
></TD
></TR
><TR
><TD CLASS="decl"
>| <A HREF="#v%3ANI_NAMEREQD"
>NI_NAMEREQD</A
></TD
></TR
><TR
><TD CLASS="decl"
>| <A HREF="#v%3ANI_NOFQDN"
>NI_NOFQDN</A
></TD
></TR
><TR
><TD CLASS="decl"
>| <A HREF="#v%3ANI_NUMERICHOST"
>NI_NUMERICHOST</A
></TD
></TR
><TR
><TD CLASS="decl"
>| <A HREF="#v%3ANI_NUMERICSERV"
>NI_NUMERICSERV</A
></TD
></TR
></TABLE
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AgetNameInfo"
>getNameInfo</A
> :: [<A HREF="Network-Socket.html#t%3ANameInfoFlag"
>NameInfoFlag</A
>] -&gt; <A HREF="../ghc-prim/GHC-Bool.html#t%3ABool"
>Bool</A
> -&gt; <A HREF="../ghc-prim/GHC-Bool.html#t%3ABool"
>Bool</A
> -&gt; <A HREF="Network-Socket.html#t%3ASockAddr"
>SockAddr</A
> -&gt; <A HREF="../base/System-IO.html#t%3AIO"
>IO</A
> (<A HREF="../base/Data-Maybe.html#t%3AMaybe"
>Maybe</A
> <A HREF="Network-Socket.html#t%3AHostName"
>HostName</A
>, <A HREF="../base/Data-Maybe.html#t%3AMaybe"
>Maybe</A
> <A HREF="Network-Socket.html#t%3AServiceName"
>ServiceName</A
>)</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3Asocket"
>socket</A
> :: <A HREF="Network-Socket.html#t%3AFamily"
>Family</A
> -&gt; <A HREF="Network-Socket.html#t%3ASocketType"
>SocketType</A
> -&gt; <A HREF="Network-Socket.html#t%3AProtocolNumber"
>ProtocolNumber</A
> -&gt; <A HREF="../base/System-IO.html#t%3AIO"
>IO</A
> <A HREF="Network-Socket.html#t%3ASocket"
>Socket</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AsocketPair"
>socketPair</A
> :: <A HREF="Network-Socket.html#t%3AFamily"
>Family</A
> -&gt; <A HREF="Network-Socket.html#t%3ASocketType"
>SocketType</A
> -&gt; <A HREF="Network-Socket.html#t%3AProtocolNumber"
>ProtocolNumber</A
> -&gt; <A HREF="../base/System-IO.html#t%3AIO"
>IO</A
> (<A HREF="Network-Socket.html#t%3ASocket"
>Socket</A
>, <A HREF="Network-Socket.html#t%3ASocket"
>Socket</A
>)</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3Aconnect"
>connect</A
> :: <A HREF="Network-Socket.html#t%3ASocket"
>Socket</A
> -&gt; <A HREF="Network-Socket.html#t%3ASockAddr"
>SockAddr</A
> -&gt; <A HREF="../base/System-IO.html#t%3AIO"
>IO</A
> <A HREF="../ghc-prim/GHC-Unit.html#t%3A%28%29"
>()</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AbindSocket"
>bindSocket</A
> :: <A HREF="Network-Socket.html#t%3ASocket"
>Socket</A
> -&gt; <A HREF="Network-Socket.html#t%3ASockAddr"
>SockAddr</A
> -&gt; <A HREF="../base/System-IO.html#t%3AIO"
>IO</A
> <A HREF="../ghc-prim/GHC-Unit.html#t%3A%28%29"
>()</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3Alisten"
>listen</A
> :: <A HREF="Network-Socket.html#t%3ASocket"
>Socket</A
> -&gt; <A HREF="../ghc-prim/GHC-Types.html#t%3AInt"
>Int</A
> -&gt; <A HREF="../base/System-IO.html#t%3AIO"
>IO</A
> <A HREF="../ghc-prim/GHC-Unit.html#t%3A%28%29"
>()</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3Aaccept"
>accept</A
> :: <A HREF="Network-Socket.html#t%3ASocket"
>Socket</A
> -&gt; <A HREF="../base/System-IO.html#t%3AIO"
>IO</A
> (<A HREF="Network-Socket.html#t%3ASocket"
>Socket</A
>, <A HREF="Network-Socket.html#t%3ASockAddr"
>SockAddr</A
>)</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AgetPeerName"
>getPeerName</A
> :: <A HREF="Network-Socket.html#t%3ASocket"
>Socket</A
> -&gt; <A HREF="../base/System-IO.html#t%3AIO"
>IO</A
> <A HREF="Network-Socket.html#t%3ASockAddr"
>SockAddr</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AgetSocketName"
>getSocketName</A
> :: <A HREF="Network-Socket.html#t%3ASocket"
>Socket</A
> -&gt; <A HREF="../base/System-IO.html#t%3AIO"
>IO</A
> <A HREF="Network-Socket.html#t%3ASockAddr"
>SockAddr</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AgetPeerCred"
>getPeerCred</A
> :: <A HREF="Network-Socket.html#t%3ASocket"
>Socket</A
> -&gt; <A HREF="../base/System-IO.html#t%3AIO"
>IO</A
> (<A HREF="../base/Foreign-C-Types.html#t%3ACUInt"
>CUInt</A
>, <A HREF="../base/Foreign-C-Types.html#t%3ACUInt"
>CUInt</A
>, <A HREF="../base/Foreign-C-Types.html#t%3ACUInt"
>CUInt</A
>)</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AsocketPort"
>socketPort</A
> :: <A HREF="Network-Socket.html#t%3ASocket"
>Socket</A
> -&gt; <A HREF="../base/System-IO.html#t%3AIO"
>IO</A
> <A HREF="Network-Socket.html#t%3APortNumber"
>PortNumber</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AsocketToHandle"
>socketToHandle</A
> :: <A HREF="Network-Socket.html#t%3ASocket"
>Socket</A
> -&gt; <A HREF="../base/System-IO.html#t%3AIOMode"
>IOMode</A
> -&gt; <A HREF="../base/System-IO.html#t%3AIO"
>IO</A
> <A HREF="../base/System-IO.html#t%3AHandle"
>Handle</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AsendTo"
>sendTo</A
> :: <A HREF="Network-Socket.html#t%3ASocket"
>Socket</A
> -&gt; <A HREF="../base/Data-Char.html#t%3AString"
>String</A
> -&gt; <A HREF="Network-Socket.html#t%3ASockAddr"
>SockAddr</A
> -&gt; <A HREF="../base/System-IO.html#t%3AIO"
>IO</A
> <A HREF="../ghc-prim/GHC-Types.html#t%3AInt"
>Int</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AsendBufTo"
>sendBufTo</A
> ::  <A HREF="Network-Socket.html#t%3ASocket"
>Socket</A
> -&gt; <A HREF="../base/Foreign-Ptr.html#t%3APtr"
>Ptr</A
> a -&gt; <A HREF="../ghc-prim/GHC-Types.html#t%3AInt"
>Int</A
> -&gt; <A HREF="Network-Socket.html#t%3ASockAddr"
>SockAddr</A
> -&gt; <A HREF="../base/System-IO.html#t%3AIO"
>IO</A
> <A HREF="../ghc-prim/GHC-Types.html#t%3AInt"
>Int</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3ArecvFrom"
>recvFrom</A
> :: <A HREF="Network-Socket.html#t%3ASocket"
>Socket</A
> -&gt; <A HREF="../ghc-prim/GHC-Types.html#t%3AInt"
>Int</A
> -&gt; <A HREF="../base/System-IO.html#t%3AIO"
>IO</A
> (<A HREF="../base/Data-Char.html#t%3AString"
>String</A
>, <A HREF="../ghc-prim/GHC-Types.html#t%3AInt"
>Int</A
>, <A HREF="Network-Socket.html#t%3ASockAddr"
>SockAddr</A
>)</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3ArecvBufFrom"
>recvBufFrom</A
> ::  <A HREF="Network-Socket.html#t%3ASocket"
>Socket</A
> -&gt; <A HREF="../base/Foreign-Ptr.html#t%3APtr"
>Ptr</A
> a -&gt; <A HREF="../ghc-prim/GHC-Types.html#t%3AInt"
>Int</A
> -&gt; <A HREF="../base/System-IO.html#t%3AIO"
>IO</A
> (<A HREF="../ghc-prim/GHC-Types.html#t%3AInt"
>Int</A
>, <A HREF="Network-Socket.html#t%3ASockAddr"
>SockAddr</A
>)</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3Asend"
>send</A
> :: <A HREF="Network-Socket.html#t%3ASocket"
>Socket</A
> -&gt; <A HREF="../base/Data-Char.html#t%3AString"
>String</A
> -&gt; <A HREF="../base/System-IO.html#t%3AIO"
>IO</A
> <A HREF="../ghc-prim/GHC-Types.html#t%3AInt"
>Int</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3Arecv"
>recv</A
> :: <A HREF="Network-Socket.html#t%3ASocket"
>Socket</A
> -&gt; <A HREF="../ghc-prim/GHC-Types.html#t%3AInt"
>Int</A
> -&gt; <A HREF="../base/System-IO.html#t%3AIO"
>IO</A
> <A HREF="../base/Data-Char.html#t%3AString"
>String</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3ArecvLen"
>recvLen</A
> :: <A HREF="Network-Socket.html#t%3ASocket"
>Socket</A
> -&gt; <A HREF="../ghc-prim/GHC-Types.html#t%3AInt"
>Int</A
> -&gt; <A HREF="../base/System-IO.html#t%3AIO"
>IO</A
> (<A HREF="../base/Data-Char.html#t%3AString"
>String</A
>, <A HREF="../ghc-prim/GHC-Types.html#t%3AInt"
>Int</A
>)</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3Ainet_addr"
>inet_addr</A
> :: <A HREF="../base/Data-Char.html#t%3AString"
>String</A
> -&gt; <A HREF="../base/System-IO.html#t%3AIO"
>IO</A
> <A HREF="Network-Socket.html#t%3AHostAddress"
>HostAddress</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3Ainet_ntoa"
>inet_ntoa</A
> :: <A HREF="Network-Socket.html#t%3AHostAddress"
>HostAddress</A
> -&gt; <A HREF="../base/System-IO.html#t%3AIO"
>IO</A
> <A HREF="../base/Data-Char.html#t%3AString"
>String</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3Ashutdown"
>shutdown</A
> :: <A HREF="Network-Socket.html#t%3ASocket"
>Socket</A
> -&gt; <A HREF="Network-Socket.html#t%3AShutdownCmd"
>ShutdownCmd</A
> -&gt; <A HREF="../base/System-IO.html#t%3AIO"
>IO</A
> <A HREF="../ghc-prim/GHC-Unit.html#t%3A%28%29"
>()</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AsClose"
>sClose</A
> :: <A HREF="Network-Socket.html#t%3ASocket"
>Socket</A
> -&gt; <A HREF="../base/System-IO.html#t%3AIO"
>IO</A
> <A HREF="../ghc-prim/GHC-Unit.html#t%3A%28%29"
>()</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AsIsConnected"
>sIsConnected</A
> :: <A HREF="Network-Socket.html#t%3ASocket"
>Socket</A
> -&gt; <A HREF="../base/System-IO.html#t%3AIO"
>IO</A
> <A HREF="../ghc-prim/GHC-Bool.html#t%3ABool"
>Bool</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AsIsBound"
>sIsBound</A
> :: <A HREF="Network-Socket.html#t%3ASocket"
>Socket</A
> -&gt; <A HREF="../base/System-IO.html#t%3AIO"
>IO</A
> <A HREF="../ghc-prim/GHC-Bool.html#t%3ABool"
>Bool</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AsIsListening"
>sIsListening</A
> :: <A HREF="Network-Socket.html#t%3ASocket"
>Socket</A
> -&gt; <A HREF="../base/System-IO.html#t%3AIO"
>IO</A
> <A HREF="../ghc-prim/GHC-Bool.html#t%3ABool"
>Bool</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AsIsReadable"
>sIsReadable</A
> :: <A HREF="Network-Socket.html#t%3ASocket"
>Socket</A
> -&gt; <A HREF="../base/System-IO.html#t%3AIO"
>IO</A
> <A HREF="../ghc-prim/GHC-Bool.html#t%3ABool"
>Bool</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AsIsWritable"
>sIsWritable</A
> :: <A HREF="Network-Socket.html#t%3ASocket"
>Socket</A
> -&gt; <A HREF="../base/System-IO.html#t%3AIO"
>IO</A
> <A HREF="../ghc-prim/GHC-Bool.html#t%3ABool"
>Bool</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
><TR
><TD CLASS="decl"
><SPAN CLASS="keyword"
>data</SPAN
>  <A HREF="#t%3ASocketOption"
>SocketOption</A
>  </TD
></TR
><TR
><TD CLASS="body"
><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
><TR
><TD CLASS="decl"
>= <A HREF="#v%3ADummySocketOption__"
>DummySocketOption__</A
></TD
></TR
><TR
><TD CLASS="decl"
>| <A HREF="#v%3ADebug"
>Debug</A
></TD
></TR
><TR
><TD CLASS="decl"
>| <A HREF="#v%3AReuseAddr"
>ReuseAddr</A
></TD
></TR
><TR
><TD CLASS="decl"
>| <A HREF="#v%3AType"
>Type</A
></TD
></TR
><TR
><TD CLASS="decl"
>| <A HREF="#v%3ASoError"
>SoError</A
></TD
></TR
><TR
><TD CLASS="decl"
>| <A HREF="#v%3ADontRoute"
>DontRoute</A
></TD
></TR
><TR
><TD CLASS="decl"
>| <A HREF="#v%3ABroadcast"
>Broadcast</A
></TD
></TR
><TR
><TD CLASS="decl"
>| <A HREF="#v%3ASendBuffer"
>SendBuffer</A
></TD
></TR
><TR
><TD CLASS="decl"
>| <A HREF="#v%3ARecvBuffer"
>RecvBuffer</A
></TD
></TR
><TR
><TD CLASS="decl"
>| <A HREF="#v%3AKeepAlive"
>KeepAlive</A
></TD
></TR
><TR
><TD CLASS="decl"
>| <A HREF="#v%3AOOBInline"
>OOBInline</A
></TD
></TR
><TR
><TD CLASS="decl"
>| <A HREF="#v%3ATimeToLive"
>TimeToLive</A
></TD
></TR
><TR
><TD CLASS="decl"
>| <A HREF="#v%3AMaxSegment"
>MaxSegment</A
></TD
></TR
><TR
><TD CLASS="decl"
>| <A HREF="#v%3ANoDelay"
>NoDelay</A
></TD
></TR
><TR
><TD CLASS="decl"
>| <A HREF="#v%3ALinger"
>Linger</A
></TD
></TR
><TR
><TD CLASS="decl"
>| <A HREF="#v%3ARecvLowWater"
>RecvLowWater</A
></TD
></TR
><TR
><TD CLASS="decl"
>| <A HREF="#v%3ASendLowWater"
>SendLowWater</A
></TD
></TR
><TR
><TD CLASS="decl"
>| <A HREF="#v%3ARecvTimeOut"
>RecvTimeOut</A
></TD
></TR
><TR
><TD CLASS="decl"
>| <A HREF="#v%3ASendTimeOut"
>SendTimeOut</A
></TD
></TR
></TABLE
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AgetSocketOption"
>getSocketOption</A
> :: <A HREF="Network-Socket.html#t%3ASocket"
>Socket</A
> -&gt; <A HREF="Network-Socket.html#t%3ASocketOption"
>SocketOption</A
> -&gt; <A HREF="../base/System-IO.html#t%3AIO"
>IO</A
> <A HREF="../ghc-prim/GHC-Types.html#t%3AInt"
>Int</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AsetSocketOption"
>setSocketOption</A
> :: <A HREF="Network-Socket.html#t%3ASocket"
>Socket</A
> -&gt; <A HREF="Network-Socket.html#t%3ASocketOption"
>SocketOption</A
> -&gt; <A HREF="../ghc-prim/GHC-Types.html#t%3AInt"
>Int</A
> -&gt; <A HREF="../base/System-IO.html#t%3AIO"
>IO</A
> <A HREF="../ghc-prim/GHC-Unit.html#t%3A%28%29"
>()</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AsendFd"
>sendFd</A
> :: <A HREF="Network-Socket.html#t%3ASocket"
>Socket</A
> -&gt; <A HREF="../base/Foreign-C-Types.html#t%3ACInt"
>CInt</A
> -&gt; <A HREF="../base/System-IO.html#t%3AIO"
>IO</A
> <A HREF="../ghc-prim/GHC-Unit.html#t%3A%28%29"
>()</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3ArecvFd"
>recvFd</A
> :: <A HREF="Network-Socket.html#t%3ASocket"
>Socket</A
> -&gt; <A HREF="../base/System-IO.html#t%3AIO"
>IO</A
> <A HREF="../base/Foreign-C-Types.html#t%3ACInt"
>CInt</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AsendAncillary"
>sendAncillary</A
> ::  <A HREF="Network-Socket.html#t%3ASocket"
>Socket</A
> -&gt; <A HREF="../ghc-prim/GHC-Types.html#t%3AInt"
>Int</A
> -&gt; <A HREF="../ghc-prim/GHC-Types.html#t%3AInt"
>Int</A
> -&gt; <A HREF="../ghc-prim/GHC-Types.html#t%3AInt"
>Int</A
> -&gt; <A HREF="../base/Foreign-Ptr.html#t%3APtr"
>Ptr</A
> a -&gt; <A HREF="../ghc-prim/GHC-Types.html#t%3AInt"
>Int</A
> -&gt; <A HREF="../base/System-IO.html#t%3AIO"
>IO</A
> <A HREF="../ghc-prim/GHC-Unit.html#t%3A%28%29"
>()</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3ArecvAncillary"
>recvAncillary</A
> ::  <A HREF="Network-Socket.html#t%3ASocket"
>Socket</A
> -&gt; <A HREF="../ghc-prim/GHC-Types.html#t%3AInt"
>Int</A
> -&gt; <A HREF="../ghc-prim/GHC-Types.html#t%3AInt"
>Int</A
> -&gt; <A HREF="../base/System-IO.html#t%3AIO"
>IO</A
> (<A HREF="../ghc-prim/GHC-Types.html#t%3AInt"
>Int</A
>, <A HREF="../ghc-prim/GHC-Types.html#t%3AInt"
>Int</A
>, <A HREF="../base/Foreign-Ptr.html#t%3APtr"
>Ptr</A
> a, <A HREF="../ghc-prim/GHC-Types.html#t%3AInt"
>Int</A
>)</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AaNY_PORT"
>aNY_PORT</A
> :: <A HREF="Network-Socket.html#t%3APortNumber"
>PortNumber</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AiNADDR_ANY"
>iNADDR_ANY</A
> :: <A HREF="Network-Socket.html#t%3AHostAddress"
>HostAddress</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AiN6ADDR_ANY"
>iN6ADDR_ANY</A
> :: <A HREF="Network-Socket.html#t%3AHostAddress6"
>HostAddress6</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AsOMAXCONN"
>sOMAXCONN</A
> :: <A HREF="../ghc-prim/GHC-Types.html#t%3AInt"
>Int</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AsOL_SOCKET"
>sOL_SOCKET</A
> :: <A HREF="../ghc-prim/GHC-Types.html#t%3AInt"
>Int</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AsCM_RIGHTS"
>sCM_RIGHTS</A
> :: <A HREF="../ghc-prim/GHC-Types.html#t%3AInt"
>Int</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AmaxListenQueue"
>maxListenQueue</A
> :: <A HREF="../ghc-prim/GHC-Types.html#t%3AInt"
>Int</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AwithSocketsDo"
>withSocketsDo</A
> ::  <A HREF="../base/System-IO.html#t%3AIO"
>IO</A
> a -&gt; <A HREF="../base/System-IO.html#t%3AIO"
>IO</A
> a</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AfdSocket"
>fdSocket</A
> :: <A HREF="Network-Socket.html#t%3ASocket"
>Socket</A
> -&gt; <A HREF="../base/Foreign-C-Types.html#t%3ACInt"
>CInt</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AmkSocket"
>mkSocket</A
> :: <A HREF="../base/Foreign-C-Types.html#t%3ACInt"
>CInt</A
> -&gt; <A HREF="Network-Socket.html#t%3AFamily"
>Family</A
> -&gt; <A HREF="Network-Socket.html#t%3ASocketType"
>SocketType</A
> -&gt; <A HREF="Network-Socket.html#t%3AProtocolNumber"
>ProtocolNumber</A
> -&gt; <A HREF="Network-Socket.html#t%3ASocketStatus"
>SocketStatus</A
> -&gt; <A HREF="../base/System-IO.html#t%3AIO"
>IO</A
> <A HREF="Network-Socket.html#t%3ASocket"
>Socket</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3ApackFamily"
>packFamily</A
> :: <A HREF="Network-Socket.html#t%3AFamily"
>Family</A
> -&gt; <A HREF="../base/Foreign-C-Types.html#t%3ACInt"
>CInt</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AunpackFamily"
>unpackFamily</A
> :: <A HREF="../base/Foreign-C-Types.html#t%3ACInt"
>CInt</A
> -&gt; <A HREF="Network-Socket.html#t%3AFamily"
>Family</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3ApackSocketType"
>packSocketType</A
> :: <A HREF="Network-Socket.html#t%3ASocketType"
>SocketType</A
> -&gt; <A HREF="../base/Foreign-C-Types.html#t%3ACInt"
>CInt</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AthrowSocketErrorIfMinus1_"
>throwSocketErrorIfMinus1_</A
> :: <A HREF="../base/Prelude.html#t%3ANum"
>Num</A
> a =&gt; <A HREF="../base/Data-Char.html#t%3AString"
>String</A
> -&gt; <A HREF="../base/System-IO.html#t%3AIO"
>IO</A
> a -&gt; <A HREF="../base/System-IO.html#t%3AIO"
>IO</A
> <A HREF="../ghc-prim/GHC-Unit.html#t%3A%28%29"
>()</A
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="section1"
><A NAME="1"
><A NAME="1"
>Types
</A
></A
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><SPAN CLASS="keyword"
>data</SPAN
>  <A NAME="t:Socket"
><A NAME="t%3ASocket"
></A
></A
><B
>Socket</B
>  </TD
></TR
><TR
><TD CLASS="body"
><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
><TR
><TD CLASS="section4"
>Constructors</TD
></TR
><TR
><TD CLASS="body"
><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"
><TR
><TD CLASS="arg"
><A NAME="v:MkSocket"
><A NAME="v%3AMkSocket"
></A
></A
><B
>MkSocket</B
> <A HREF="../base/Foreign-C-Types.html#t%3ACInt"
>CInt</A
> <A HREF="Network-Socket.html#t%3AFamily"
>Family</A
> <A HREF="Network-Socket.html#t%3ASocketType"
>SocketType</A
> <A HREF="Network-Socket.html#t%3AProtocolNumber"
>ProtocolNumber</A
> (<A HREF="../base/Control-Concurrent-MVar.html#t%3AMVar"
>MVar</A
> <A HREF="Network-Socket.html#t%3ASocketStatus"
>SocketStatus</A
>)</TD
><TD CLASS="rdoc"
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="section4"
><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:Socket')" ALT="show/hide"
> Instances</TD
></TR
><TR
><TD CLASS="body"
><DIV ID="i:Socket" STYLE="display:block;"
><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"
><TR
><TD CLASS="decl"
><A HREF="../base/Data-Eq.html#t%3AEq"
>Eq</A
> <A HREF="Network-Socket.html#t%3ASocket"
>Socket</A
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="../base/Text-Show.html#t%3AShow"
>Show</A
> <A HREF="Network-Socket.html#t%3ASocket"
>Socket</A
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="../base/Data-Typeable.html#t%3ATypeable"
>Typeable</A
> <A HREF="Network-Socket.html#t%3ASocket"
>Socket</A
></TD
></TR
></TABLE
></DIV
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><SPAN CLASS="keyword"
>data</SPAN
>  <A NAME="t:Family"
><A NAME="t%3AFamily"
></A
></A
><B
>Family</B
>  </TD
></TR
><TR
><TD CLASS="body"
><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
><TR
><TD CLASS="ndoc"
>This data type might have different constructors depending on
 what is supported by the operating system.
</TD
></TR
><TR
><TD CLASS="section4"
>Constructors</TD
></TR
><TR
><TD CLASS="body"
><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"
><TR
><TD CLASS="arg"
><A NAME="v:AF_UNSPEC"
><A NAME="v%3AAF_UNSPEC"
></A
></A
><B
>AF_UNSPEC</B
></TD
><TD CLASS="rdoc"
></TD
></TR
><TR
><TD CLASS="arg"
><A NAME="v:AF_UNIX"
><A NAME="v%3AAF_UNIX"
></A
></A
><B
>AF_UNIX</B
></TD
><TD CLASS="rdoc"
></TD
></TR
><TR
><TD CLASS="arg"
><A NAME="v:AF_INET"
><A NAME="v%3AAF_INET"
></A
></A
><B
>AF_INET</B
></TD
><TD CLASS="rdoc"
></TD
></TR
><TR
><TD CLASS="arg"
><A NAME="v:AF_INET6"
><A NAME="v%3AAF_INET6"
></A
></A
><B
>AF_INET6</B
></TD
><TD CLASS="rdoc"
></TD
></TR
><TR
><TD CLASS="arg"
><A NAME="v:AF_SNA"
><A NAME="v%3AAF_SNA"
></A
></A
><B
>AF_SNA</B
></TD
><TD CLASS="rdoc"
></TD
></TR
><TR
><TD CLASS="arg"
><A NAME="v:AF_DECnet"
><A NAME="v%3AAF_DECnet"
></A
></A
><B
>AF_DECnet</B
></TD
><TD CLASS="rdoc"
></TD
></TR
><TR
><TD CLASS="arg"
><A NAME="v:AF_APPLETALK"
><A NAME="v%3AAF_APPLETALK"
></A
></A
><B
>AF_APPLETALK</B
></TD
><TD CLASS="rdoc"
></TD
></TR
><TR
><TD CLASS="arg"
><A NAME="v:AF_ROUTE"
><A NAME="v%3AAF_ROUTE"
></A
></A
><B
>AF_ROUTE</B
></TD
><TD CLASS="rdoc"
></TD
></TR
><TR
><TD CLASS="arg"
><A NAME="v:AF_X25"
><A NAME="v%3AAF_X25"
></A
></A
><B
>AF_X25</B
></TD
><TD CLASS="rdoc"
></TD
></TR
><TR
><TD CLASS="arg"
><A NAME="v:AF_AX25"
><A NAME="v%3AAF_AX25"
></A
></A
><B
>AF_AX25</B
></TD
><TD CLASS="rdoc"
></TD
></TR
><TR
><TD CLASS="arg"
><A NAME="v:AF_IPX"
><A NAME="v%3AAF_IPX"
></A
></A
><B
>AF_IPX</B
></TD
><TD CLASS="rdoc"
></TD
></TR
><TR
><TD CLASS="arg"
><A NAME="v:AF_ISDN"
><A NAME="v%3AAF_ISDN"
></A
></A
><B
>AF_ISDN</B
></TD
><TD CLASS="rdoc"
></TD
></TR
><TR
><TD CLASS="arg"
><A NAME="v:AF_NETROM"
><A NAME="v%3AAF_NETROM"
></A
></A
><B
>AF_NETROM</B
></TD
><TD CLASS="rdoc"
></TD
></TR
><TR
><TD CLASS="arg"
><A NAME="v:AF_BRIDGE"
><A NAME="v%3AAF_BRIDGE"
></A
></A
><B
>AF_BRIDGE</B
></TD
><TD CLASS="rdoc"
></TD
></TR
><TR
><TD CLASS="arg"
><A NAME="v:AF_ATMPVC"
><A NAME="v%3AAF_ATMPVC"
></A
></A
><B
>AF_ATMPVC</B
></TD
><TD CLASS="rdoc"
></TD
></TR
><TR
><TD CLASS="arg"
><A NAME="v:AF_ROSE"
><A NAME="v%3AAF_ROSE"
></A
></A
><B
>AF_ROSE</B
></TD
><TD CLASS="rdoc"
></TD
></TR
><TR
><TD CLASS="arg"
><A NAME="v:AF_NETBEUI"
><A NAME="v%3AAF_NETBEUI"
></A
></A
><B
>AF_NETBEUI</B
></TD
><TD CLASS="rdoc"
></TD
></TR
><TR
><TD CLASS="arg"
><A NAME="v:AF_SECURITY"
><A NAME="v%3AAF_SECURITY"
></A
></A
><B
>AF_SECURITY</B
></TD
><TD CLASS="rdoc"
></TD
></TR
><TR
><TD CLASS="arg"
><A NAME="v:AF_PACKET"
><A NAME="v%3AAF_PACKET"
></A
></A
><B
>AF_PACKET</B
></TD
><TD CLASS="rdoc"
></TD
></TR
><TR
><TD CLASS="arg"
><A NAME="v:AF_ASH"
><A NAME="v%3AAF_ASH"
></A
></A
><B
>AF_ASH</B
></TD
><TD CLASS="rdoc"
></TD
></TR
><TR
><TD CLASS="arg"
><A NAME="v:AF_ECONET"
><A NAME="v%3AAF_ECONET"
></A
></A
><B
>AF_ECONET</B
></TD
><TD CLASS="rdoc"
></TD
></TR
><TR
><TD CLASS="arg"
><A NAME="v:AF_ATMSVC"
><A NAME="v%3AAF_ATMSVC"
></A
></A
><B
>AF_ATMSVC</B
></TD
><TD CLASS="rdoc"
></TD
></TR
><TR
><TD CLASS="arg"
><A NAME="v:AF_IRDA"
><A NAME="v%3AAF_IRDA"
></A
></A
><B
>AF_IRDA</B
></TD
><TD CLASS="rdoc"
></TD
></TR
><TR
><TD CLASS="arg"
><A NAME="v:AF_PPPOX"
><A NAME="v%3AAF_PPPOX"
></A
></A
><B
>AF_PPPOX</B
></TD
><TD CLASS="rdoc"
></TD
></TR
><TR
><TD CLASS="arg"
><A NAME="v:AF_WANPIPE"
><A NAME="v%3AAF_WANPIPE"
></A
></A
><B
>AF_WANPIPE</B
></TD
><TD CLASS="rdoc"
></TD
></TR
><TR
><TD CLASS="arg"
><A NAME="v:AF_BLUETOOTH"
><A NAME="v%3AAF_BLUETOOTH"
></A
></A
><B
>AF_BLUETOOTH</B
></TD
><TD CLASS="rdoc"
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="section4"
><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:Family')" ALT="show/hide"
> Instances</TD
></TR
><TR
><TD CLASS="body"
><DIV ID="i:Family" STYLE="display:block;"
><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"
><TR
><TD CLASS="decl"
><A HREF="../base/Data-Eq.html#t%3AEq"
>Eq</A
> <A HREF="Network-Socket.html#t%3AFamily"
>Family</A
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="../base/Data-Ord.html#t%3AOrd"
>Ord</A
> <A HREF="Network-Socket.html#t%3AFamily"
>Family</A
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="../base/Text-Read.html#t%3ARead"
>Read</A
> <A HREF="Network-Socket.html#t%3AFamily"
>Family</A
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="../base/Text-Show.html#t%3AShow"
>Show</A
> <A HREF="Network-Socket.html#t%3AFamily"
>Family</A
></TD
></TR
></TABLE
></DIV
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><SPAN CLASS="keyword"
>data</SPAN
>  <A NAME="t:SocketType"
><A NAME="t%3ASocketType"
></A
></A
><B
>SocketType</B
>  </TD
></TR
><TR
><TD CLASS="body"
><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
><TR
><TD CLASS="ndoc"
><P
>Socket Types.
</P
><P
>This data type might have different constructors depending on what is
 supported by the operating system.
</P
></TD
></TR
><TR
><TD CLASS="section4"
>Constructors</TD
></TR
><TR
><TD CLASS="body"
><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"
><TR
><TD CLASS="arg"
><A NAME="v:NoSocketType"
><A NAME="v%3ANoSocketType"
></A
></A
><B
>NoSocketType</B
></TD
><TD CLASS="rdoc"
></TD
></TR
><TR
><TD CLASS="arg"
><A NAME="v:Stream"
><A NAME="v%3AStream"
></A
></A
><B
>Stream</B
></TD
><TD CLASS="rdoc"
></TD
></TR
><TR
><TD CLASS="arg"
><A NAME="v:Datagram"
><A NAME="v%3ADatagram"
></A
></A
><B
>Datagram</B
></TD
><TD CLASS="rdoc"
></TD
></TR
><TR
><TD CLASS="arg"
><A NAME="v:Raw"
><A NAME="v%3ARaw"
></A
></A
><B
>Raw</B
></TD
><TD CLASS="rdoc"
></TD
></TR
><TR
><TD CLASS="arg"
><A NAME="v:RDM"
><A NAME="v%3ARDM"
></A
></A
><B
>RDM</B
></TD
><TD CLASS="rdoc"
></TD
></TR
><TR
><TD CLASS="arg"
><A NAME="v:SeqPacket"
><A NAME="v%3ASeqPacket"
></A
></A
><B
>SeqPacket</B
></TD
><TD CLASS="rdoc"
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="section4"
><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:SocketType')" ALT="show/hide"
> Instances</TD
></TR
><TR
><TD CLASS="body"
><DIV ID="i:SocketType" STYLE="display:block;"
><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"
><TR
><TD CLASS="decl"
><A HREF="../base/Data-Eq.html#t%3AEq"
>Eq</A
> <A HREF="Network-Socket.html#t%3ASocketType"
>SocketType</A
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="../base/Data-Ord.html#t%3AOrd"
>Ord</A
> <A HREF="Network-Socket.html#t%3ASocketType"
>SocketType</A
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="../base/Text-Read.html#t%3ARead"
>Read</A
> <A HREF="Network-Socket.html#t%3ASocketType"
>SocketType</A
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="../base/Text-Show.html#t%3AShow"
>Show</A
> <A HREF="Network-Socket.html#t%3ASocketType"
>SocketType</A
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="../base/Data-Typeable.html#t%3ATypeable"
>Typeable</A
> <A HREF="Network-Socket.html#t%3ASocketType"
>SocketType</A
></TD
></TR
></TABLE
></DIV
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><SPAN CLASS="keyword"
>data</SPAN
>  <A NAME="t:SockAddr"
><A NAME="t%3ASockAddr"
></A
></A
><B
>SockAddr</B
>  </TD
></TR
><TR
><TD CLASS="body"
><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
><TR
><TD CLASS="section4"
>Constructors</TD
></TR
><TR
><TD CLASS="body"
><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"
><TR
><TD CLASS="arg"
><A NAME="v:SockAddrInet"
><A NAME="v%3ASockAddrInet"
></A
></A
><B
>SockAddrInet</B
> <A HREF="Network-Socket.html#t%3APortNumber"
>PortNumber</A
> <A HREF="Network-Socket.html#t%3AHostAddress"
>HostAddress</A
></TD
><TD CLASS="rdoc"
></TD
></TR
><TR
><TD CLASS="arg"
><A NAME="v:SockAddrInet6"
><A NAME="v%3ASockAddrInet6"
></A
></A
><B
>SockAddrInet6</B
> <A HREF="Network-Socket.html#t%3APortNumber"
>PortNumber</A
> <A HREF="Network-Socket.html#t%3AFlowInfo"
>FlowInfo</A
> <A HREF="Network-Socket.html#t%3AHostAddress6"
>HostAddress6</A
> <A HREF="Network-Socket.html#t%3AScopeID"
>ScopeID</A
></TD
><TD CLASS="rdoc"
></TD
></TR
><TR
><TD CLASS="arg"
><A NAME="v:SockAddrUnix"
><A NAME="v%3ASockAddrUnix"
></A
></A
><B
>SockAddrUnix</B
> <A HREF="../base/Data-Char.html#t%3AString"
>String</A
></TD
><TD CLASS="rdoc"
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="section4"
><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:SockAddr')" ALT="show/hide"
> Instances</TD
></TR
><TR
><TD CLASS="body"
><DIV ID="i:SockAddr" STYLE="display:block;"
><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"
><TR
><TD CLASS="decl"
><A HREF="../base/Data-Eq.html#t%3AEq"
>Eq</A
> <A HREF="Network-Socket.html#t%3ASockAddr"
>SockAddr</A
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="../base/Text-Show.html#t%3AShow"
>Show</A
> <A HREF="Network-Socket.html#t%3ASockAddr"
>SockAddr</A
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="../base/Data-Typeable.html#t%3ATypeable"
>Typeable</A
> <A HREF="Network-Socket.html#t%3ASockAddr"
>SockAddr</A
></TD
></TR
></TABLE
></DIV
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><SPAN CLASS="keyword"
>data</SPAN
>  <A NAME="t:SocketStatus"
><A NAME="t%3ASocketStatus"
></A
></A
><B
>SocketStatus</B
>  </TD
></TR
><TR
><TD CLASS="body"
><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
><TR
><TD CLASS="section4"
>Constructors</TD
></TR
><TR
><TD CLASS="body"
><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"
><TR
><TD CLASS="arg"
><A NAME="v:NotConnected"
><A NAME="v%3ANotConnected"
></A
></A
><B
>NotConnected</B
></TD
><TD CLASS="rdoc"
></TD
></TR
><TR
><TD CLASS="arg"
><A NAME="v:Bound"
><A NAME="v%3ABound"
></A
></A
><B
>Bound</B
></TD
><TD CLASS="rdoc"
></TD
></TR
><TR
><TD CLASS="arg"
><A NAME="v:Listening"
><A NAME="v%3AListening"
></A
></A
><B
>Listening</B
></TD
><TD CLASS="rdoc"
></TD
></TR
><TR
><TD CLASS="arg"
><A NAME="v:Connected"
><A NAME="v%3AConnected"
></A
></A
><B
>Connected</B
></TD
><TD CLASS="rdoc"
></TD
></TR
><TR
><TD CLASS="arg"
><A NAME="v:ConvertedToHandle"
><A NAME="v%3AConvertedToHandle"
></A
></A
><B
>ConvertedToHandle</B
></TD
><TD CLASS="rdoc"
></TD
></TR
><TR
><TD CLASS="arg"
><A NAME="v:Closed"
><A NAME="v%3AClosed"
></A
></A
><B
>Closed</B
></TD
><TD CLASS="rdoc"
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="section4"
><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:SocketStatus')" ALT="show/hide"
> Instances</TD
></TR
><TR
><TD CLASS="body"
><DIV ID="i:SocketStatus" STYLE="display:block;"
><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"
><TR
><TD CLASS="decl"
><A HREF="../base/Data-Eq.html#t%3AEq"
>Eq</A
> <A HREF="Network-Socket.html#t%3ASocketStatus"
>SocketStatus</A
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="../base/Text-Show.html#t%3AShow"
>Show</A
> <A HREF="Network-Socket.html#t%3ASocketStatus"
>SocketStatus</A
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="../base/Data-Typeable.html#t%3ATypeable"
>Typeable</A
> <A HREF="Network-Socket.html#t%3ASocketStatus"
>SocketStatus</A
></TD
></TR
></TABLE
></DIV
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><SPAN CLASS="keyword"
>type</SPAN
> <A NAME="t:HostAddress"
><A NAME="t%3AHostAddress"
></A
></A
><B
>HostAddress</B
> = <A HREF="../base/Data-Word.html#t%3AWord32"
>Word32</A
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><SPAN CLASS="keyword"
>type</SPAN
> <A NAME="t:HostAddress6"
><A NAME="t%3AHostAddress6"
></A
></A
><B
>HostAddress6</B
> = (<A HREF="../base/Data-Word.html#t%3AWord32"
>Word32</A
>, <A HREF="../base/Data-Word.html#t%3AWord32"
>Word32</A
>, <A HREF="../base/Data-Word.html#t%3AWord32"
>Word32</A
>, <A HREF="../base/Data-Word.html#t%3AWord32"
>Word32</A
>)</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><SPAN CLASS="keyword"
>type</SPAN
> <A NAME="t:FlowInfo"
><A NAME="t%3AFlowInfo"
></A
></A
><B
>FlowInfo</B
> = <A HREF="../base/Data-Word.html#t%3AWord32"
>Word32</A
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><SPAN CLASS="keyword"
>type</SPAN
> <A NAME="t:ScopeID"
><A NAME="t%3AScopeID"
></A
></A
><B
>ScopeID</B
> = <A HREF="../base/Data-Word.html#t%3AWord32"
>Word32</A
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><SPAN CLASS="keyword"
>data</SPAN
>  <A NAME="t:ShutdownCmd"
><A NAME="t%3AShutdownCmd"
></A
></A
><B
>ShutdownCmd</B
>  </TD
></TR
><TR
><TD CLASS="body"
><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
><TR
><TD CLASS="section4"
>Constructors</TD
></TR
><TR
><TD CLASS="body"
><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"
><TR
><TD CLASS="arg"
><A NAME="v:ShutdownReceive"
><A NAME="v%3AShutdownReceive"
></A
></A
><B
>ShutdownReceive</B
></TD
><TD CLASS="rdoc"
></TD
></TR
><TR
><TD CLASS="arg"
><A NAME="v:ShutdownSend"
><A NAME="v%3AShutdownSend"
></A
></A
><B
>ShutdownSend</B
></TD
><TD CLASS="rdoc"
></TD
></TR
><TR
><TD CLASS="arg"
><A NAME="v:ShutdownBoth"
><A NAME="v%3AShutdownBoth"
></A
></A
><B
>ShutdownBoth</B
></TD
><TD CLASS="rdoc"
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="section4"
><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:ShutdownCmd')" ALT="show/hide"
> Instances</TD
></TR
><TR
><TD CLASS="body"
><DIV ID="i:ShutdownCmd" STYLE="display:block;"
><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"
><TR
><TD CLASS="decl"
><A HREF="../base/Data-Typeable.html#t%3ATypeable"
>Typeable</A
> <A HREF="Network-Socket.html#t%3AShutdownCmd"
>ShutdownCmd</A
></TD
></TR
></TABLE
></DIV
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><SPAN CLASS="keyword"
>type</SPAN
> <A NAME="t:ProtocolNumber"
><A NAME="t%3AProtocolNumber"
></A
></A
><B
>ProtocolNumber</B
> = <A HREF="../base/Foreign-C-Types.html#t%3ACInt"
>CInt</A
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:defaultProtocol"
><A NAME="v%3AdefaultProtocol"
></A
></A
><B
>defaultProtocol</B
> :: <A HREF="Network-Socket.html#t%3AProtocolNumber"
>ProtocolNumber</A
></TD
></TR
><TR
><TD CLASS="doc"
>This is the default protocol for a given service.
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><SPAN CLASS="keyword"
>newtype</SPAN
>  <A NAME="t:PortNumber"
><A NAME="t%3APortNumber"
></A
></A
><B
>PortNumber</B
>  </TD
></TR
><TR
><TD CLASS="body"
><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
><TR
><TD CLASS="section4"
>Constructors</TD
></TR
><TR
><TD CLASS="body"
><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"
><TR
><TD CLASS="arg"
><A NAME="v:PortNum"
><A NAME="v%3APortNum"
></A
></A
><B
>PortNum</B
> <A HREF="../base/Data-Word.html#t%3AWord16"
>Word16</A
></TD
><TD CLASS="rdoc"
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="section4"
><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:PortNumber')" ALT="show/hide"
> Instances</TD
></TR
><TR
><TD CLASS="body"
><DIV ID="i:PortNumber" STYLE="display:block;"
><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"
><TR
><TD CLASS="decl"
><A HREF="../base/Prelude.html#t%3AEnum"
>Enum</A
> <A HREF="Network-Socket.html#t%3APortNumber"
>PortNumber</A
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="../base/Data-Eq.html#t%3AEq"
>Eq</A
> <A HREF="Network-Socket.html#t%3APortNumber"
>PortNumber</A
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="../base/Prelude.html#t%3AIntegral"
>Integral</A
> <A HREF="Network-Socket.html#t%3APortNumber"
>PortNumber</A
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="../base/Prelude.html#t%3ANum"
>Num</A
> <A HREF="Network-Socket.html#t%3APortNumber"
>PortNumber</A
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="../base/Data-Ord.html#t%3AOrd"
>Ord</A
> <A HREF="Network-Socket.html#t%3APortNumber"
>PortNumber</A
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="../base/Prelude.html#t%3AReal"
>Real</A
> <A HREF="Network-Socket.html#t%3APortNumber"
>PortNumber</A
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="../base/Text-Show.html#t%3AShow"
>Show</A
> <A HREF="Network-Socket.html#t%3APortNumber"
>PortNumber</A
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="../base/Data-Typeable.html#t%3ATypeable"
>Typeable</A
> <A HREF="Network-Socket.html#t%3APortNumber"
>PortNumber</A
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="../base/Foreign-Storable.html#t%3AStorable"
>Storable</A
> <A HREF="Network-Socket.html#t%3APortNumber"
>PortNumber</A
></TD
></TR
></TABLE
></DIV
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="section1"
><A NAME="2"
><A NAME="2"
>Address operations
</A
></A
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><SPAN CLASS="keyword"
>type</SPAN
> <A NAME="t:HostName"
><A NAME="t%3AHostName"
></A
></A
><B
>HostName</B
> = <A HREF="../base/Data-Char.html#t%3AString"
>String</A
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><SPAN CLASS="keyword"
>type</SPAN
> <A NAME="t:ServiceName"
><A NAME="t%3AServiceName"
></A
></A
><B
>ServiceName</B
> = <A HREF="../base/Data-Char.html#t%3AString"
>String</A
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><SPAN CLASS="keyword"
>data</SPAN
>  <A NAME="t:AddrInfo"
><A NAME="t%3AAddrInfo"
></A
></A
><B
>AddrInfo</B
>  </TD
></TR
><TR
><TD CLASS="body"
><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
><TR
><TD CLASS="section4"
>Constructors</TD
></TR
><TR
><TD CLASS="body"
><TABLE CLASS="vanilla" CELLSPACING="5" CELLPADDING="0"
><TR
><TD CLASS="arg"
><A NAME="v:AddrInfo"
><A NAME="v%3AAddrInfo"
></A
></A
><B
>AddrInfo</B
></TD
><TD CLASS="rdoc"
></TD
></TR
><TR
><TD CLASS="body" COLSPAN="2"
><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"
><TR
><TD CLASS="arg"
><A NAME="v:addrFlags"
><A NAME="v%3AaddrFlags"
></A
></A
><B
>addrFlags</B
> :: [<A HREF="Network-Socket.html#t%3AAddrInfoFlag"
>AddrInfoFlag</A
>]</TD
><TD CLASS="rdoc"
></TD
></TR
><TR
><TD CLASS="arg"
><A NAME="v:addrFamily"
><A NAME="v%3AaddrFamily"
></A
></A
><B
>addrFamily</B
> :: <A HREF="Network-Socket.html#t%3AFamily"
>Family</A
></TD
><TD CLASS="rdoc"
></TD
></TR
><TR
><TD CLASS="arg"
><A NAME="v:addrSocketType"
><A NAME="v%3AaddrSocketType"
></A
></A
><B
>addrSocketType</B
> :: <A HREF="Network-Socket.html#t%3ASocketType"
>SocketType</A
></TD
><TD CLASS="rdoc"
></TD
></TR
><TR
><TD CLASS="arg"
><A NAME="v:addrProtocol"
><A NAME="v%3AaddrProtocol"
></A
></A
><B
>addrProtocol</B
> :: <A HREF="Network-Socket.html#t%3AProtocolNumber"
>ProtocolNumber</A
></TD
><TD CLASS="rdoc"
></TD
></TR
><TR
><TD CLASS="arg"
><A NAME="v:addrAddress"
><A NAME="v%3AaddrAddress"
></A
></A
><B
>addrAddress</B
> :: <A HREF="Network-Socket.html#t%3ASockAddr"
>SockAddr</A
></TD
><TD CLASS="rdoc"
></TD
></TR
><TR
><TD CLASS="arg"
><A NAME="v:addrCanonName"
><A NAME="v%3AaddrCanonName"
></A
></A
><B
>addrCanonName</B
> :: <A HREF="../base/Data-Maybe.html#t%3AMaybe"
>Maybe</A
> <A HREF="../base/Data-Char.html#t%3AString"
>String</A
></TD
><TD CLASS="rdoc"
></TD
></TR
></TABLE
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="section4"
><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:AddrInfo')" ALT="show/hide"
> Instances</TD
></TR
><TR
><TD CLASS="body"
><DIV ID="i:AddrInfo" STYLE="display:block;"
><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"
><TR
><TD CLASS="decl"
><A HREF="../base/Data-Eq.html#t%3AEq"
>Eq</A
> <A HREF="Network-Socket.html#t%3AAddrInfo"
>AddrInfo</A
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="../base/Text-Show.html#t%3AShow"
>Show</A
> <A HREF="Network-Socket.html#t%3AAddrInfo"
>AddrInfo</A
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="../base/Data-Typeable.html#t%3ATypeable"
>Typeable</A
> <A HREF="Network-Socket.html#t%3AAddrInfo"
>AddrInfo</A
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="../base/Foreign-Storable.html#t%3AStorable"
>Storable</A
> <A HREF="Network-Socket.html#t%3AAddrInfo"
>AddrInfo</A
></TD
></TR
></TABLE
></DIV
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><SPAN CLASS="keyword"
>data</SPAN
>  <A NAME="t:AddrInfoFlag"
><A NAME="t%3AAddrInfoFlag"
></A
></A
><B
>AddrInfoFlag</B
>  </TD
></TR
><TR
><TD CLASS="body"
><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
><TR
><TD CLASS="ndoc"
>Flags that control the querying behaviour of <TT
><A HREF="Network-Socket.html#v%3AgetAddrInfo"
>getAddrInfo</A
></TT
>.
</TD
></TR
><TR
><TD CLASS="section4"
>Constructors</TD
></TR
><TR
><TD CLASS="body"
><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"
><TR
><TD CLASS="arg"
><A NAME="v:AI_ADDRCONFIG"
><A NAME="v%3AAI_ADDRCONFIG"
></A
></A
><B
>AI_ADDRCONFIG</B
></TD
><TD CLASS="rdoc"
></TD
></TR
><TR
><TD CLASS="arg"
><A NAME="v:AI_ALL"
><A NAME="v%3AAI_ALL"
></A
></A
><B
>AI_ALL</B
></TD
><TD CLASS="rdoc"
></TD
></TR
><TR
><TD CLASS="arg"
><A NAME="v:AI_CANONNAME"
><A NAME="v%3AAI_CANONNAME"
></A
></A
><B
>AI_CANONNAME</B
></TD
><TD CLASS="rdoc"
></TD
></TR
><TR
><TD CLASS="arg"
><A NAME="v:AI_NUMERICHOST"
><A NAME="v%3AAI_NUMERICHOST"
></A
></A
><B
>AI_NUMERICHOST</B
></TD
><TD CLASS="rdoc"
></TD
></TR
><TR
><TD CLASS="arg"
><A NAME="v:AI_NUMERICSERV"
><A NAME="v%3AAI_NUMERICSERV"
></A
></A
><B
>AI_NUMERICSERV</B
></TD
><TD CLASS="rdoc"
></TD
></TR
><TR
><TD CLASS="arg"
><A NAME="v:AI_PASSIVE"
><A NAME="v%3AAI_PASSIVE"
></A
></A
><B
>AI_PASSIVE</B
></TD
><TD CLASS="rdoc"
></TD
></TR
><TR
><TD CLASS="arg"
><A NAME="v:AI_V4MAPPED"
><A NAME="v%3AAI_V4MAPPED"
></A
></A
><B
>AI_V4MAPPED</B
></TD
><TD CLASS="rdoc"
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="section4"
><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:AddrInfoFlag')" ALT="show/hide"
> Instances</TD
></TR
><TR
><TD CLASS="body"
><DIV ID="i:AddrInfoFlag" STYLE="display:block;"
><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"
><TR
><TD CLASS="decl"
><A HREF="../base/Data-Eq.html#t%3AEq"
>Eq</A
> <A HREF="Network-Socket.html#t%3AAddrInfoFlag"
>AddrInfoFlag</A
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="../base/Text-Read.html#t%3ARead"
>Read</A
> <A HREF="Network-Socket.html#t%3AAddrInfoFlag"
>AddrInfoFlag</A
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="../base/Text-Show.html#t%3AShow"
>Show</A
> <A HREF="Network-Socket.html#t%3AAddrInfoFlag"
>AddrInfoFlag</A
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="../base/Data-Typeable.html#t%3ATypeable"
>Typeable</A
> <A HREF="Network-Socket.html#t%3AAddrInfoFlag"
>AddrInfoFlag</A
></TD
></TR
></TABLE
></DIV
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:addrInfoFlagImplemented"
><A NAME="v%3AaddrInfoFlagImplemented"
></A
></A
><B
>addrInfoFlagImplemented</B
> :: <A HREF="Network-Socket.html#t%3AAddrInfoFlag"
>AddrInfoFlag</A
> -&gt; <A HREF="../ghc-prim/GHC-Bool.html#t%3ABool"
>Bool</A
></TD
></TR
><TR
><TD CLASS="doc"
>Indicate whether the given <TT
><A HREF="Network-Socket.html#t%3AAddrInfoFlag"
>AddrInfoFlag</A
></TT
> will have any effect on
 this system.
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:defaultHints"
><A NAME="v%3AdefaultHints"
></A
></A
><B
>defaultHints</B
> :: <A HREF="Network-Socket.html#t%3AAddrInfo"
>AddrInfo</A
></TD
></TR
><TR
><TD CLASS="doc"
>Default hints for address lookup with <TT
><A HREF="Network-Socket.html#v%3AgetAddrInfo"
>getAddrInfo</A
></TT
>.  The values
 of the <TT
><A HREF="Network-Socket.html#v%3AaddrAddress"
>addrAddress</A
></TT
> and <TT
><A HREF="Network-Socket.html#v%3AaddrCanonName"
>addrCanonName</A
></TT
> fields are <TT
><A HREF="../base/Prelude.html#v%3Aundefined"
>undefined</A
></TT
>,
 and are never inspected by <TT
><A HREF="Network-Socket.html#v%3AgetAddrInfo"
>getAddrInfo</A
></TT
>.
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:getAddrInfo"
><A NAME="v%3AgetAddrInfo"
></A
></A
><B
>getAddrInfo</B
></TD
></TR
><TR
><TD CLASS="body"
><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
><TR
><TD CLASS="arg"
>:: <A HREF="../base/Data-Maybe.html#t%3AMaybe"
>Maybe</A
> <A HREF="Network-Socket.html#t%3AAddrInfo"
>AddrInfo</A
></TD
><TD CLASS="rdoc"
>preferred socket type or protocol
</TD
></TR
><TR
><TD CLASS="arg"
>-&gt; <A HREF="../base/Data-Maybe.html#t%3AMaybe"
>Maybe</A
> <A HREF="Network-Socket.html#t%3AHostName"
>HostName</A
></TD
><TD CLASS="rdoc"
>host name to look up
</TD
></TR
><TR
><TD CLASS="arg"
>-&gt; <A HREF="../base/Data-Maybe.html#t%3AMaybe"
>Maybe</A
> <A HREF="Network-Socket.html#t%3AServiceName"
>ServiceName</A
></TD
><TD CLASS="rdoc"
>service name to look up
</TD
></TR
><TR
><TD CLASS="arg"
>-&gt; <A HREF="../base/System-IO.html#t%3AIO"
>IO</A
> [<A HREF="Network-Socket.html#t%3AAddrInfo"
>AddrInfo</A
>]</TD
><TD CLASS="rdoc"
>resolved addresses, with <A HREF="best.html"
>best</A
> first
</TD
></TR
><TR
><TD CLASS="ndoc" COLSPAN="2"
><P
>Resolve a host or service name to one or more addresses.
 The <TT
><A HREF="Network-Socket.html#t%3AAddrInfo"
>AddrInfo</A
></TT
> values that this function returns contain <TT
><A HREF="Network-Socket.html#t%3ASockAddr"
>SockAddr</A
></TT
>
 values that you can pass directly to <TT
><A HREF="Network-Socket.html#v%3Aconnect"
>connect</A
></TT
> or
 <TT
><A HREF="Network-Socket.html#v%3AbindSocket"
>bindSocket</A
></TT
>.
</P
><P
>This function is protocol independent.  It can return both IPv4 and
 IPv6 address information.
</P
><P
>The <TT
><A HREF="Network-Socket.html#t%3AAddrInfo"
>AddrInfo</A
></TT
> argument specifies the preferred query behaviour,
 socket options, or protocol.  You can override these conveniently
 using Haskell's record update syntax on <TT
><A HREF="Network-Socket.html#v%3AdefaultHints"
>defaultHints</A
></TT
>, for example
 as follows:
</P
><PRE
>
   myHints = defaultHints { addrFlags = [AI_ADDRCONFIG, AI_CANONNAME] }
</PRE
><P
>Values for <TT
><A HREF="Network-Socket.html#v%3AaddrFlags"
>addrFlags</A
></TT
> control query behaviour.  The supported
 flags are as follows:
</P
><DL
><DT
><TT
>AI_PASSIVE</TT
></DT
><DD
> If no <TT
><A HREF="Network-Socket.html#t%3AHostName"
>HostName</A
></TT
> value is provided, the network
     address in each <TT
><A HREF="Network-Socket.html#t%3ASockAddr"
>SockAddr</A
></TT
>
     will be left as a <A HREF="wild card.html"
>wild card</A
>, i.e. as either <TT
><A HREF="Network-Socket.html#v%3AiNADDR_ANY"
>iNADDR_ANY</A
></TT
>
     or <TT
><A HREF="Network-Socket.html#v%3AiN6ADDR_ANY"
>iN6ADDR_ANY</A
></TT
>.  This is useful for server applications that
     will accept connections from any client.
</DD
><DT
><TT
>AI_CANONNAME</TT
></DT
><DD
> The <TT
><A HREF="Network-Socket.html#v%3AaddrCanonName"
>addrCanonName</A
></TT
> field of the first returned
     <TT
><A HREF="Network-Socket.html#t%3AAddrInfo"
>AddrInfo</A
></TT
> will contain the <A HREF="canonical name.html"
>canonical name</A
> of the host.
</DD
><DT
><TT
>AI_NUMERICHOST</TT
></DT
><DD
> The <TT
><A HREF="Network-Socket.html#t%3AHostName"
>HostName</A
></TT
> argument <EM
>must</EM
> be a numeric
     address in string form, and network name lookups will not be
     attempted.
</DD
></DL
><P
><EM
>Note</EM
>: Although the following flags are required by RFC 3493, they
 may not have an effect on all platforms, because the underlying
 network stack may not support them.  To see whether a flag from the
 list below will have any effect, call <TT
><A HREF="Network-Socket.html#v%3AaddrInfoFlagImplemented"
>addrInfoFlagImplemented</A
></TT
>.
</P
><DL
><DT
><TT
>AI_NUMERICSERV</TT
></DT
><DD
> The <TT
><A HREF="Network-Socket.html#t%3AServiceName"
>ServiceName</A
></TT
> argument <EM
>must</EM
> be a port
     number in string form, and service name lookups will not be
     attempted.
</DD
><DT
><TT
>AI_ADDRCONFIG</TT
></DT
><DD
> The list of returned <TT
><A HREF="Network-Socket.html#t%3AAddrInfo"
>AddrInfo</A
></TT
> values will
     only contain IPv4 addresses if the local system has at least
     one IPv4 interface configured, and likewise for IPv6.
</DD
><DT
><TT
>AI_V4MAPPED</TT
></DT
><DD
> If an IPv6 lookup is performed, and no IPv6
     addresses are found, IPv6-mapped IPv4 addresses will be
     returned.
</DD
><DT
><TT
>AI_ALL</TT
></DT
><DD
> If <TT
><A HREF="Network-Socket.html#v%3AAI_ALL"
>AI_ALL</A
></TT
> is specified, return all matching IPv6 and
     IPv4 addresses.  Otherwise, this flag has no effect.
</DD
></DL
><P
>You must provide a <TT
><A HREF="../base/Data-Maybe.html#v%3AJust"
>Just</A
></TT
> value for at least one of the <TT
><A HREF="Network-Socket.html#t%3AHostName"
>HostName</A
></TT
>
 or <TT
><A HREF="Network-Socket.html#t%3AServiceName"
>ServiceName</A
></TT
> arguments.  <TT
><A HREF="Network-Socket.html#t%3AHostName"
>HostName</A
></TT
> can be either a numeric
 network address (dotted quad for IPv4, colon-separated hex for
 IPv6) or a hostname.  In the latter case, its addresses will be
 looked up unless <TT
><A HREF="Network-Socket.html#v%3AAI_NUMERICHOST"
>AI_NUMERICHOST</A
></TT
> is specified as a hint.  If you
 do not provide a <TT
><A HREF="Network-Socket.html#t%3AHostName"
>HostName</A
></TT
> value <EM
>and</EM
> do not set <TT
><A HREF="Network-Socket.html#v%3AAI_PASSIVE"
>AI_PASSIVE</A
></TT
> as
 a hint, network addresses in the result will contain the address of
 the loopback interface.
</P
><P
>If the query fails, this function throws an IO exception instead of
 returning an empty list.  Otherwise, it returns a non-empty list
 of <TT
><A HREF="Network-Socket.html#t%3AAddrInfo"
>AddrInfo</A
></TT
> values.
</P
><P
>There are several reasons why a query might result in several
 values.  For example, the queried-for host could be multihomed, or
 the service might be available via several protocols.
</P
><P
>Note: the order of arguments is slightly different to that defined
 for <TT
>getaddrinfo</TT
> in RFC 2553.  The <TT
><A HREF="Network-Socket.html#t%3AAddrInfo"
>AddrInfo</A
></TT
> parameter comes first
 to make partial application easier.
</P
><P
>Example:
 <TT
>
   let hints = defaultHints { addrFlags = [AI_ADDRCONFIG, AI_CANONNAME] }
   addrs &lt;- getAddrInfo (Just hints) (Just <A HREF="www-haskell-org.html"
>www.haskell.org</A
>) (Just <A HREF="http.html"
>http</A
>)
   let addr = head addrs
   sock &lt;- socket (addrFamily addr) (addrSocketType addr) (addrProtocol addr)
   connect sock (addrAddress addr)
 </TT
>
</P
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><SPAN CLASS="keyword"
>data</SPAN
>  <A NAME="t:NameInfoFlag"
><A NAME="t%3ANameInfoFlag"
></A
></A
><B
>NameInfoFlag</B
>  </TD
></TR
><TR
><TD CLASS="body"
><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
><TR
><TD CLASS="section4"
>Constructors</TD
></TR
><TR
><TD CLASS="body"
><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"
><TR
><TD CLASS="arg"
><A NAME="v:NI_DGRAM"
><A NAME="v%3ANI_DGRAM"
></A
></A
><B
>NI_DGRAM</B
></TD
><TD CLASS="rdoc"
></TD
></TR
><TR
><TD CLASS="arg"
><A NAME="v:NI_NAMEREQD"
><A NAME="v%3ANI_NAMEREQD"
></A
></A
><B
>NI_NAMEREQD</B
></TD
><TD CLASS="rdoc"
></TD
></TR
><TR
><TD CLASS="arg"
><A NAME="v:NI_NOFQDN"
><A NAME="v%3ANI_NOFQDN"
></A
></A
><B
>NI_NOFQDN</B
></TD
><TD CLASS="rdoc"
></TD
></TR
><TR
><TD CLASS="arg"
><A NAME="v:NI_NUMERICHOST"
><A NAME="v%3ANI_NUMERICHOST"
></A
></A
><B
>NI_NUMERICHOST</B
></TD
><TD CLASS="rdoc"
></TD
></TR
><TR
><TD CLASS="arg"
><A NAME="v:NI_NUMERICSERV"
><A NAME="v%3ANI_NUMERICSERV"
></A
></A
><B
>NI_NUMERICSERV</B
></TD
><TD CLASS="rdoc"
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="section4"
><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:NameInfoFlag')" ALT="show/hide"
> Instances</TD
></TR
><TR
><TD CLASS="body"
><DIV ID="i:NameInfoFlag" STYLE="display:block;"
><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"
><TR
><TD CLASS="decl"
><A HREF="../base/Data-Eq.html#t%3AEq"
>Eq</A
> <A HREF="Network-Socket.html#t%3ANameInfoFlag"
>NameInfoFlag</A
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="../base/Text-Read.html#t%3ARead"
>Read</A
> <A HREF="Network-Socket.html#t%3ANameInfoFlag"
>NameInfoFlag</A
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="../base/Text-Show.html#t%3AShow"
>Show</A
> <A HREF="Network-Socket.html#t%3ANameInfoFlag"
>NameInfoFlag</A
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="../base/Data-Typeable.html#t%3ATypeable"
>Typeable</A
> <A HREF="Network-Socket.html#t%3ANameInfoFlag"
>NameInfoFlag</A
></TD
></TR
></TABLE
></DIV
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:getNameInfo"
><A NAME="v%3AgetNameInfo"
></A
></A
><B
>getNameInfo</B
></TD
></TR
><TR
><TD CLASS="body"
><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
><TR
><TD CLASS="arg"
>:: [<A HREF="Network-Socket.html#t%3ANameInfoFlag"
>NameInfoFlag</A
>]</TD
><TD CLASS="rdoc"
>flags to control lookup behaviour
</TD
></TR
><TR
><TD CLASS="arg"
>-&gt; <A HREF="../ghc-prim/GHC-Bool.html#t%3ABool"
>Bool</A
></TD
><TD CLASS="rdoc"
>whether to look up a hostname
</TD
></TR
><TR
><TD CLASS="arg"
>-&gt; <A HREF="../ghc-prim/GHC-Bool.html#t%3ABool"
>Bool</A
></TD
><TD CLASS="rdoc"
>whether to look up a service name
</TD
></TR
><TR
><TD CLASS="arg"
>-&gt; <A HREF="Network-Socket.html#t%3ASockAddr"
>SockAddr</A
></TD
><TD CLASS="rdoc"
>the address to look up
</TD
></TR
><TR
><TD CLASS="arg"
>-&gt; <A HREF="../base/System-IO.html#t%3AIO"
>IO</A
> (<A HREF="../base/Data-Maybe.html#t%3AMaybe"
>Maybe</A
> <A HREF="Network-Socket.html#t%3AHostName"
>HostName</A
>, <A HREF="../base/Data-Maybe.html#t%3AMaybe"
>Maybe</A
> <A HREF="Network-Socket.html#t%3AServiceName"
>ServiceName</A
>)</TD
><TD CLASS="rdoc"
></TD
></TR
><TR
><TD CLASS="ndoc" COLSPAN="2"
><P
>Resolve an address to a host or service name.
 This function is protocol independent.
</P
><P
>The list of <TT
><A HREF="Network-Socket.html#t%3ANameInfoFlag"
>NameInfoFlag</A
></TT
> values controls query behaviour.  The
 supported flags are as follows:
</P
><DL
><DT
><TT
>NI_NOFQDN</TT
></DT
><DD
> If a host is local, return only the
     hostname part of the FQDN.
</DD
><DT
><TT
>NI_NUMERICHOST</TT
></DT
><DD
> The name of the host is not
     looked up.  Instead, a numeric representation of the host's
     address is returned.  For an IPv4 address, this will be a
     dotted-quad string.  For IPv6, it will be colon-separated
     hexadecimal.
</DD
><DT
><TT
>NI_NUMERICSERV</TT
></DT
><DD
> The name of the service is not
     looked up.  Instead, a numeric representation of the
     service is returned.
</DD
><DT
><TT
>NI_NAMEREQD</TT
></DT
><DD
> If the hostname cannot be looked up, an IO error
     is thrown.
</DD
><DT
><TT
>NI_DGRAM</TT
></DT
><DD
> Resolve a datagram-based service name.  This is
     required only for the few protocols that have different port
     numbers for their datagram-based versions than for their
     stream-based versions.
</DD
></DL
><P
>Hostname and service name lookups can be expensive.  You can
 specify which lookups to perform via the two <TT
><A HREF="../ghc-prim/GHC-Bool.html#t%3ABool"
>Bool</A
></TT
> arguments.  If
 one of these is <TT
><A HREF="../ghc-prim/GHC-Bool.html#v%3AFalse"
>False</A
></TT
>, the corresponding value in the returned
 tuple will be <TT
><A HREF="../base/Data-Maybe.html#v%3ANothing"
>Nothing</A
></TT
>, and no lookup will be performed.
</P
><P
>If a host or service's name cannot be looked up, then the numeric
 form of the address or service will be returned.
</P
><P
>If the query fails, this function throws an IO exception.
</P
><P
>Example:
 <TT
>
   (hostName, _) &lt;- getNameInfo [] True False myAddress
 </TT
>
</P
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="section1"
><A NAME="3"
><A NAME="3"
>Socket Operations
</A
></A
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:socket"
><A NAME="v%3Asocket"
></A
></A
><B
>socket</B
> :: <A HREF="Network-Socket.html#t%3AFamily"
>Family</A
> -&gt; <A HREF="Network-Socket.html#t%3ASocketType"
>SocketType</A
> -&gt; <A HREF="Network-Socket.html#t%3AProtocolNumber"
>ProtocolNumber</A
> -&gt; <A HREF="../base/System-IO.html#t%3AIO"
>IO</A
> <A HREF="Network-Socket.html#t%3ASocket"
>Socket</A
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:socketPair"
><A NAME="v%3AsocketPair"
></A
></A
><B
>socketPair</B
> :: <A HREF="Network-Socket.html#t%3AFamily"
>Family</A
> -&gt; <A HREF="Network-Socket.html#t%3ASocketType"
>SocketType</A
> -&gt; <A HREF="Network-Socket.html#t%3AProtocolNumber"
>ProtocolNumber</A
> -&gt; <A HREF="../base/System-IO.html#t%3AIO"
>IO</A
> (<A HREF="Network-Socket.html#t%3ASocket"
>Socket</A
>, <A HREF="Network-Socket.html#t%3ASocket"
>Socket</A
>)</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:connect"
><A NAME="v%3Aconnect"
></A
></A
><B
>connect</B
> :: <A HREF="Network-Socket.html#t%3ASocket"
>Socket</A
> -&gt; <A HREF="Network-Socket.html#t%3ASockAddr"
>SockAddr</A
> -&gt; <A HREF="../base/System-IO.html#t%3AIO"
>IO</A
> <A HREF="../ghc-prim/GHC-Unit.html#t%3A%28%29"
>()</A
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:bindSocket"
><A NAME="v%3AbindSocket"
></A
></A
><B
>bindSocket</B
> :: <A HREF="Network-Socket.html#t%3ASocket"
>Socket</A
> -&gt; <A HREF="Network-Socket.html#t%3ASockAddr"
>SockAddr</A
> -&gt; <A HREF="../base/System-IO.html#t%3AIO"
>IO</A
> <A HREF="../ghc-prim/GHC-Unit.html#t%3A%28%29"
>()</A
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:listen"
><A NAME="v%3Alisten"
></A
></A
><B
>listen</B
> :: <A HREF="Network-Socket.html#t%3ASocket"
>Socket</A
> -&gt; <A HREF="../ghc-prim/GHC-Types.html#t%3AInt"
>Int</A
> -&gt; <A HREF="../base/System-IO.html#t%3AIO"
>IO</A
> <A HREF="../ghc-prim/GHC-Unit.html#t%3A%28%29"
>()</A
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:accept"
><A NAME="v%3Aaccept"
></A
></A
><B
>accept</B
> :: <A HREF="Network-Socket.html#t%3ASocket"
>Socket</A
> -&gt; <A HREF="../base/System-IO.html#t%3AIO"
>IO</A
> (<A HREF="Network-Socket.html#t%3ASocket"
>Socket</A
>, <A HREF="Network-Socket.html#t%3ASockAddr"
>SockAddr</A
>)</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:getPeerName"
><A NAME="v%3AgetPeerName"
></A
></A
><B
>getPeerName</B
> :: <A HREF="Network-Socket.html#t%3ASocket"
>Socket</A
> -&gt; <A HREF="../base/System-IO.html#t%3AIO"
>IO</A
> <A HREF="Network-Socket.html#t%3ASockAddr"
>SockAddr</A
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:getSocketName"
><A NAME="v%3AgetSocketName"
></A
></A
><B
>getSocketName</B
> :: <A HREF="Network-Socket.html#t%3ASocket"
>Socket</A
> -&gt; <A HREF="../base/System-IO.html#t%3AIO"
>IO</A
> <A HREF="Network-Socket.html#t%3ASockAddr"
>SockAddr</A
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:getPeerCred"
><A NAME="v%3AgetPeerCred"
></A
></A
><B
>getPeerCred</B
> :: <A HREF="Network-Socket.html#t%3ASocket"
>Socket</A
> -&gt; <A HREF="../base/System-IO.html#t%3AIO"
>IO</A
> (<A HREF="../base/Foreign-C-Types.html#t%3ACUInt"
>CUInt</A
>, <A HREF="../base/Foreign-C-Types.html#t%3ACUInt"
>CUInt</A
>, <A HREF="../base/Foreign-C-Types.html#t%3ACUInt"
>CUInt</A
>)</TD
></TR
><TR
><TD CLASS="doc"
><P
>Returns the processID, userID and groupID of the socket's peer.
</P
><P
>Only available on platforms that support SO_PEERCRED on domain sockets.
</P
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:socketPort"
><A NAME="v%3AsocketPort"
></A
></A
><B
>socketPort</B
> :: <A HREF="Network-Socket.html#t%3ASocket"
>Socket</A
> -&gt; <A HREF="../base/System-IO.html#t%3AIO"
>IO</A
> <A HREF="Network-Socket.html#t%3APortNumber"
>PortNumber</A
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:socketToHandle"
><A NAME="v%3AsocketToHandle"
></A
></A
><B
>socketToHandle</B
> :: <A HREF="Network-Socket.html#t%3ASocket"
>Socket</A
> -&gt; <A HREF="../base/System-IO.html#t%3AIOMode"
>IOMode</A
> -&gt; <A HREF="../base/System-IO.html#t%3AIO"
>IO</A
> <A HREF="../base/System-IO.html#t%3AHandle"
>Handle</A
></TD
></TR
><TR
><TD CLASS="doc"
><P
>turns a Socket into an <TT
><A HREF="../base/System-IO.html#t%3AHandle"
>Handle</A
></TT
>. By default, the new handle is
 unbuffered. Use <TT
><A HREF="../base/System-IO.html#v%3AhSetBuffering"
>hSetBuffering</A
></TT
> to change the buffering.
</P
><P
>Note that since a <TT
><A HREF="../base/System-IO.html#t%3AHandle"
>Handle</A
></TT
> is automatically closed by a finalizer
 when it is no longer referenced, you should avoid doing any more
 operations on the <TT
><A HREF="Network-Socket.html#t%3ASocket"
>Socket</A
></TT
> after calling <TT
><A HREF="Network-Socket.html#v%3AsocketToHandle"
>socketToHandle</A
></TT
>.  To
 close the <TT
><A HREF="Network-Socket.html#t%3ASocket"
>Socket</A
></TT
> after <TT
><A HREF="Network-Socket.html#v%3AsocketToHandle"
>socketToHandle</A
></TT
>, call <TT
><A HREF="../base/System-IO.html#v%3AhClose"
>hClose</A
></TT
>
 on the <TT
><A HREF="../base/System-IO.html#t%3AHandle"
>Handle</A
></TT
>.
</P
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:sendTo"
><A NAME="v%3AsendTo"
></A
></A
><B
>sendTo</B
> :: <A HREF="Network-Socket.html#t%3ASocket"
>Socket</A
> -&gt; <A HREF="../base/Data-Char.html#t%3AString"
>String</A
> -&gt; <A HREF="Network-Socket.html#t%3ASockAddr"
>SockAddr</A
> -&gt; <A HREF="../base/System-IO.html#t%3AIO"
>IO</A
> <A HREF="../ghc-prim/GHC-Types.html#t%3AInt"
>Int</A
></TD
></TR
><TR
><TD CLASS="doc"
>NOTE: blocking on Windows unless you compile with -threaded (see
 GHC ticket #1129)
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:sendBufTo"
><A NAME="v%3AsendBufTo"
></A
></A
><B
>sendBufTo</B
> ::  <A HREF="Network-Socket.html#t%3ASocket"
>Socket</A
> -&gt; <A HREF="../base/Foreign-Ptr.html#t%3APtr"
>Ptr</A
> a -&gt; <A HREF="../ghc-prim/GHC-Types.html#t%3AInt"
>Int</A
> -&gt; <A HREF="Network-Socket.html#t%3ASockAddr"
>SockAddr</A
> -&gt; <A HREF="../base/System-IO.html#t%3AIO"
>IO</A
> <A HREF="../ghc-prim/GHC-Types.html#t%3AInt"
>Int</A
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:recvFrom"
><A NAME="v%3ArecvFrom"
></A
></A
><B
>recvFrom</B
> :: <A HREF="Network-Socket.html#t%3ASocket"
>Socket</A
> -&gt; <A HREF="../ghc-prim/GHC-Types.html#t%3AInt"
>Int</A
> -&gt; <A HREF="../base/System-IO.html#t%3AIO"
>IO</A
> (<A HREF="../base/Data-Char.html#t%3AString"
>String</A
>, <A HREF="../ghc-prim/GHC-Types.html#t%3AInt"
>Int</A
>, <A HREF="Network-Socket.html#t%3ASockAddr"
>SockAddr</A
>)</TD
></TR
><TR
><TD CLASS="doc"
>NOTE: blocking on Windows unless you compile with -threaded (see
 GHC ticket #1129)
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:recvBufFrom"
><A NAME="v%3ArecvBufFrom"
></A
></A
><B
>recvBufFrom</B
> ::  <A HREF="Network-Socket.html#t%3ASocket"
>Socket</A
> -&gt; <A HREF="../base/Foreign-Ptr.html#t%3APtr"
>Ptr</A
> a -&gt; <A HREF="../ghc-prim/GHC-Types.html#t%3AInt"
>Int</A
> -&gt; <A HREF="../base/System-IO.html#t%3AIO"
>IO</A
> (<A HREF="../ghc-prim/GHC-Types.html#t%3AInt"
>Int</A
>, <A HREF="Network-Socket.html#t%3ASockAddr"
>SockAddr</A
>)</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:send"
><A NAME="v%3Asend"
></A
></A
><B
>send</B
> :: <A HREF="Network-Socket.html#t%3ASocket"
>Socket</A
> -&gt; <A HREF="../base/Data-Char.html#t%3AString"
>String</A
> -&gt; <A HREF="../base/System-IO.html#t%3AIO"
>IO</A
> <A HREF="../ghc-prim/GHC-Types.html#t%3AInt"
>Int</A
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:recv"
><A NAME="v%3Arecv"
></A
></A
><B
>recv</B
> :: <A HREF="Network-Socket.html#t%3ASocket"
>Socket</A
> -&gt; <A HREF="../ghc-prim/GHC-Types.html#t%3AInt"
>Int</A
> -&gt; <A HREF="../base/System-IO.html#t%3AIO"
>IO</A
> <A HREF="../base/Data-Char.html#t%3AString"
>String</A
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:recvLen"
><A NAME="v%3ArecvLen"
></A
></A
><B
>recvLen</B
> :: <A HREF="Network-Socket.html#t%3ASocket"
>Socket</A
> -&gt; <A HREF="../ghc-prim/GHC-Types.html#t%3AInt"
>Int</A
> -&gt; <A HREF="../base/System-IO.html#t%3AIO"
>IO</A
> (<A HREF="../base/Data-Char.html#t%3AString"
>String</A
>, <A HREF="../ghc-prim/GHC-Types.html#t%3AInt"
>Int</A
>)</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:inet_addr"
><A NAME="v%3Ainet_addr"
></A
></A
><B
>inet_addr</B
> :: <A HREF="../base/Data-Char.html#t%3AString"
>String</A
> -&gt; <A HREF="../base/System-IO.html#t%3AIO"
>IO</A
> <A HREF="Network-Socket.html#t%3AHostAddress"
>HostAddress</A
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:inet_ntoa"
><A NAME="v%3Ainet_ntoa"
></A
></A
><B
>inet_ntoa</B
> :: <A HREF="Network-Socket.html#t%3AHostAddress"
>HostAddress</A
> -&gt; <A HREF="../base/System-IO.html#t%3AIO"
>IO</A
> <A HREF="../base/Data-Char.html#t%3AString"
>String</A
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:shutdown"
><A NAME="v%3Ashutdown"
></A
></A
><B
>shutdown</B
> :: <A HREF="Network-Socket.html#t%3ASocket"
>Socket</A
> -&gt; <A HREF="Network-Socket.html#t%3AShutdownCmd"
>ShutdownCmd</A
> -&gt; <A HREF="../base/System-IO.html#t%3AIO"
>IO</A
> <A HREF="../ghc-prim/GHC-Unit.html#t%3A%28%29"
>()</A
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:sClose"
><A NAME="v%3AsClose"
></A
></A
><B
>sClose</B
> :: <A HREF="Network-Socket.html#t%3ASocket"
>Socket</A
> -&gt; <A HREF="../base/System-IO.html#t%3AIO"
>IO</A
> <A HREF="../ghc-prim/GHC-Unit.html#t%3A%28%29"
>()</A
></TD
></TR
><TR
><TD CLASS="doc"
>Closes a socket
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="section2"
><A NAME="4"
><A NAME="4"
>Predicates on sockets
</A
></A
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:sIsConnected"
><A NAME="v%3AsIsConnected"
></A
></A
><B
>sIsConnected</B
> :: <A HREF="Network-Socket.html#t%3ASocket"
>Socket</A
> -&gt; <A HREF="../base/System-IO.html#t%3AIO"
>IO</A
> <A HREF="../ghc-prim/GHC-Bool.html#t%3ABool"
>Bool</A
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:sIsBound"
><A NAME="v%3AsIsBound"
></A
></A
><B
>sIsBound</B
> :: <A HREF="Network-Socket.html#t%3ASocket"
>Socket</A
> -&gt; <A HREF="../base/System-IO.html#t%3AIO"
>IO</A
> <A HREF="../ghc-prim/GHC-Bool.html#t%3ABool"
>Bool</A
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:sIsListening"
><A NAME="v%3AsIsListening"
></A
></A
><B
>sIsListening</B
> :: <A HREF="Network-Socket.html#t%3ASocket"
>Socket</A
> -&gt; <A HREF="../base/System-IO.html#t%3AIO"
>IO</A
> <A HREF="../ghc-prim/GHC-Bool.html#t%3ABool"
>Bool</A
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:sIsReadable"
><A NAME="v%3AsIsReadable"
></A
></A
><B
>sIsReadable</B
> :: <A HREF="Network-Socket.html#t%3ASocket"
>Socket</A
> -&gt; <A HREF="../base/System-IO.html#t%3AIO"
>IO</A
> <A HREF="../ghc-prim/GHC-Bool.html#t%3ABool"
>Bool</A
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:sIsWritable"
><A NAME="v%3AsIsWritable"
></A
></A
><B
>sIsWritable</B
> :: <A HREF="Network-Socket.html#t%3ASocket"
>Socket</A
> -&gt; <A HREF="../base/System-IO.html#t%3AIO"
>IO</A
> <A HREF="../ghc-prim/GHC-Bool.html#t%3ABool"
>Bool</A
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="section1"
><A NAME="5"
><A NAME="5"
>Socket options
</A
></A
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><SPAN CLASS="keyword"
>data</SPAN
>  <A NAME="t:SocketOption"
><A NAME="t%3ASocketOption"
></A
></A
><B
>SocketOption</B
>  </TD
></TR
><TR
><TD CLASS="body"
><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
><TR
><TD CLASS="section4"
>Constructors</TD
></TR
><TR
><TD CLASS="body"
><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"
><TR
><TD CLASS="arg"
><A NAME="v:DummySocketOption__"
><A NAME="v%3ADummySocketOption__"
></A
></A
><B
>DummySocketOption__</B
></TD
><TD CLASS="rdoc"
></TD
></TR
><TR
><TD CLASS="arg"
><A NAME="v:Debug"
><A NAME="v%3ADebug"
></A
></A
><B
>Debug</B
></TD
><TD CLASS="rdoc"
></TD
></TR
><TR
><TD CLASS="arg"
><A NAME="v:ReuseAddr"
><A NAME="v%3AReuseAddr"
></A
></A
><B
>ReuseAddr</B
></TD
><TD CLASS="rdoc"
></TD
></TR
><TR
><TD CLASS="arg"
><A NAME="v:Type"
><A NAME="v%3AType"
></A
></A
><B
>Type</B
></TD
><TD CLASS="rdoc"
></TD
></TR
><TR
><TD CLASS="arg"
><A NAME="v:SoError"
><A NAME="v%3ASoError"
></A
></A
><B
>SoError</B
></TD
><TD CLASS="rdoc"
></TD
></TR
><TR
><TD CLASS="arg"
><A NAME="v:DontRoute"
><A NAME="v%3ADontRoute"
></A
></A
><B
>DontRoute</B
></TD
><TD CLASS="rdoc"
></TD
></TR
><TR
><TD CLASS="arg"
><A NAME="v:Broadcast"
><A NAME="v%3ABroadcast"
></A
></A
><B
>Broadcast</B
></TD
><TD CLASS="rdoc"
></TD
></TR
><TR
><TD CLASS="arg"
><A NAME="v:SendBuffer"
><A NAME="v%3ASendBuffer"
></A
></A
><B
>SendBuffer</B
></TD
><TD CLASS="rdoc"
></TD
></TR
><TR
><TD CLASS="arg"
><A NAME="v:RecvBuffer"
><A NAME="v%3ARecvBuffer"
></A
></A
><B
>RecvBuffer</B
></TD
><TD CLASS="rdoc"
></TD
></TR
><TR
><TD CLASS="arg"
><A NAME="v:KeepAlive"
><A NAME="v%3AKeepAlive"
></A
></A
><B
>KeepAlive</B
></TD
><TD CLASS="rdoc"
></TD
></TR
><TR
><TD CLASS="arg"
><A NAME="v:OOBInline"
><A NAME="v%3AOOBInline"
></A
></A
><B
>OOBInline</B
></TD
><TD CLASS="rdoc"
></TD
></TR
><TR
><TD CLASS="arg"
><A NAME="v:TimeToLive"
><A NAME="v%3ATimeToLive"
></A
></A
><B
>TimeToLive</B
></TD
><TD CLASS="rdoc"
></TD
></TR
><TR
><TD CLASS="arg"
><A NAME="v:MaxSegment"
><A NAME="v%3AMaxSegment"
></A
></A
><B
>MaxSegment</B
></TD
><TD CLASS="rdoc"
></TD
></TR
><TR
><TD CLASS="arg"
><A NAME="v:NoDelay"
><A NAME="v%3ANoDelay"
></A
></A
><B
>NoDelay</B
></TD
><TD CLASS="rdoc"
></TD
></TR
><TR
><TD CLASS="arg"
><A NAME="v:Linger"
><A NAME="v%3ALinger"
></A
></A
><B
>Linger</B
></TD
><TD CLASS="rdoc"
></TD
></TR
><TR
><TD CLASS="arg"
><A NAME="v:RecvLowWater"
><A NAME="v%3ARecvLowWater"
></A
></A
><B
>RecvLowWater</B
></TD
><TD CLASS="rdoc"
></TD
></TR
><TR
><TD CLASS="arg"
><A NAME="v:SendLowWater"
><A NAME="v%3ASendLowWater"
></A
></A
><B
>SendLowWater</B
></TD
><TD CLASS="rdoc"
></TD
></TR
><TR
><TD CLASS="arg"
><A NAME="v:RecvTimeOut"
><A NAME="v%3ARecvTimeOut"
></A
></A
><B
>RecvTimeOut</B
></TD
><TD CLASS="rdoc"
></TD
></TR
><TR
><TD CLASS="arg"
><A NAME="v:SendTimeOut"
><A NAME="v%3ASendTimeOut"
></A
></A
><B
>SendTimeOut</B
></TD
><TD CLASS="rdoc"
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="section4"
><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:SocketOption')" ALT="show/hide"
> Instances</TD
></TR
><TR
><TD CLASS="body"
><DIV ID="i:SocketOption" STYLE="display:block;"
><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"
><TR
><TD CLASS="decl"
><A HREF="../base/Data-Typeable.html#t%3ATypeable"
>Typeable</A
> <A HREF="Network-Socket.html#t%3ASocketOption"
>SocketOption</A
></TD
></TR
></TABLE
></DIV
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:getSocketOption"
><A NAME="v%3AgetSocketOption"
></A
></A
><B
>getSocketOption</B
> :: <A HREF="Network-Socket.html#t%3ASocket"
>Socket</A
> -&gt; <A HREF="Network-Socket.html#t%3ASocketOption"
>SocketOption</A
> -&gt; <A HREF="../base/System-IO.html#t%3AIO"
>IO</A
> <A HREF="../ghc-prim/GHC-Types.html#t%3AInt"
>Int</A
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:setSocketOption"
><A NAME="v%3AsetSocketOption"
></A
></A
><B
>setSocketOption</B
> :: <A HREF="Network-Socket.html#t%3ASocket"
>Socket</A
> -&gt; <A HREF="Network-Socket.html#t%3ASocketOption"
>SocketOption</A
> -&gt; <A HREF="../ghc-prim/GHC-Types.html#t%3AInt"
>Int</A
> -&gt; <A HREF="../base/System-IO.html#t%3AIO"
>IO</A
> <A HREF="../ghc-prim/GHC-Unit.html#t%3A%28%29"
>()</A
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="section1"
><A NAME="6"
><A NAME="6"
>File descriptor transmission
</A
></A
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:sendFd"
><A NAME="v%3AsendFd"
></A
></A
><B
>sendFd</B
> :: <A HREF="Network-Socket.html#t%3ASocket"
>Socket</A
> -&gt; <A HREF="../base/Foreign-C-Types.html#t%3ACInt"
>CInt</A
> -&gt; <A HREF="../base/System-IO.html#t%3AIO"
>IO</A
> <A HREF="../ghc-prim/GHC-Unit.html#t%3A%28%29"
>()</A
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:recvFd"
><A NAME="v%3ArecvFd"
></A
></A
><B
>recvFd</B
> :: <A HREF="Network-Socket.html#t%3ASocket"
>Socket</A
> -&gt; <A HREF="../base/System-IO.html#t%3AIO"
>IO</A
> <A HREF="../base/Foreign-C-Types.html#t%3ACInt"
>CInt</A
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:sendAncillary"
><A NAME="v%3AsendAncillary"
></A
></A
><B
>sendAncillary</B
> ::  <A HREF="Network-Socket.html#t%3ASocket"
>Socket</A
> -&gt; <A HREF="../ghc-prim/GHC-Types.html#t%3AInt"
>Int</A
> -&gt; <A HREF="../ghc-prim/GHC-Types.html#t%3AInt"
>Int</A
> -&gt; <A HREF="../ghc-prim/GHC-Types.html#t%3AInt"
>Int</A
> -&gt; <A HREF="../base/Foreign-Ptr.html#t%3APtr"
>Ptr</A
> a -&gt; <A HREF="../ghc-prim/GHC-Types.html#t%3AInt"
>Int</A
> -&gt; <A HREF="../base/System-IO.html#t%3AIO"
>IO</A
> <A HREF="../ghc-prim/GHC-Unit.html#t%3A%28%29"
>()</A
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:recvAncillary"
><A NAME="v%3ArecvAncillary"
></A
></A
><B
>recvAncillary</B
> ::  <A HREF="Network-Socket.html#t%3ASocket"
>Socket</A
> -&gt; <A HREF="../ghc-prim/GHC-Types.html#t%3AInt"
>Int</A
> -&gt; <A HREF="../ghc-prim/GHC-Types.html#t%3AInt"
>Int</A
> -&gt; <A HREF="../base/System-IO.html#t%3AIO"
>IO</A
> (<A HREF="../ghc-prim/GHC-Types.html#t%3AInt"
>Int</A
>, <A HREF="../ghc-prim/GHC-Types.html#t%3AInt"
>Int</A
>, <A HREF="../base/Foreign-Ptr.html#t%3APtr"
>Ptr</A
> a, <A HREF="../ghc-prim/GHC-Types.html#t%3AInt"
>Int</A
>)</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="section1"
><A NAME="7"
><A NAME="7"
>Special Constants
</A
></A
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:aNY_PORT"
><A NAME="v%3AaNY_PORT"
></A
></A
><B
>aNY_PORT</B
> :: <A HREF="Network-Socket.html#t%3APortNumber"
>PortNumber</A
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:iNADDR_ANY"
><A NAME="v%3AiNADDR_ANY"
></A
></A
><B
>iNADDR_ANY</B
> :: <A HREF="Network-Socket.html#t%3AHostAddress"
>HostAddress</A
></TD
></TR
><TR
><TD CLASS="doc"
>The IPv4 wild card address.
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:iN6ADDR_ANY"
><A NAME="v%3AiN6ADDR_ANY"
></A
></A
><B
>iN6ADDR_ANY</B
> :: <A HREF="Network-Socket.html#t%3AHostAddress6"
>HostAddress6</A
></TD
></TR
><TR
><TD CLASS="doc"
>The IPv6 wild card address.
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:sOMAXCONN"
><A NAME="v%3AsOMAXCONN"
></A
></A
><B
>sOMAXCONN</B
> :: <A HREF="../ghc-prim/GHC-Types.html#t%3AInt"
>Int</A
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:sOL_SOCKET"
><A NAME="v%3AsOL_SOCKET"
></A
></A
><B
>sOL_SOCKET</B
> :: <A HREF="../ghc-prim/GHC-Types.html#t%3AInt"
>Int</A
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:sCM_RIGHTS"
><A NAME="v%3AsCM_RIGHTS"
></A
></A
><B
>sCM_RIGHTS</B
> :: <A HREF="../ghc-prim/GHC-Types.html#t%3AInt"
>Int</A
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:maxListenQueue"
><A NAME="v%3AmaxListenQueue"
></A
></A
><B
>maxListenQueue</B
> :: <A HREF="../ghc-prim/GHC-Types.html#t%3AInt"
>Int</A
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="section1"
><A NAME="8"
><A NAME="8"
>Initialisation
</A
></A
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:withSocketsDo"
><A NAME="v%3AwithSocketsDo"
></A
></A
><B
>withSocketsDo</B
> ::  <A HREF="../base/System-IO.html#t%3AIO"
>IO</A
> a -&gt; <A HREF="../base/System-IO.html#t%3AIO"
>IO</A
> a</TD
></TR
><TR
><TD CLASS="doc"
><P
>On Windows operating systems, the networking subsystem has to be
initialised using <TT
><A HREF="Network-Socket.html#v%3AwithSocketsDo"
>withSocketsDo</A
></TT
> before any networking operations can
be used.  eg.
</P
><PRE
> main = withSocketsDo $ do {...}
</PRE
><P
>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.
</P
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="section1"
><A NAME="9"
><A NAME="9"
>Very low level operations
</A
></A
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:fdSocket"
><A NAME="v%3AfdSocket"
></A
></A
><B
>fdSocket</B
> :: <A HREF="Network-Socket.html#t%3ASocket"
>Socket</A
> -&gt; <A HREF="../base/Foreign-C-Types.html#t%3ACInt"
>CInt</A
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:mkSocket"
><A NAME="v%3AmkSocket"
></A
></A
><B
>mkSocket</B
> :: <A HREF="../base/Foreign-C-Types.html#t%3ACInt"
>CInt</A
> -&gt; <A HREF="Network-Socket.html#t%3AFamily"
>Family</A
> -&gt; <A HREF="Network-Socket.html#t%3ASocketType"
>SocketType</A
> -&gt; <A HREF="Network-Socket.html#t%3AProtocolNumber"
>ProtocolNumber</A
> -&gt; <A HREF="Network-Socket.html#t%3ASocketStatus"
>SocketStatus</A
> -&gt; <A HREF="../base/System-IO.html#t%3AIO"
>IO</A
> <A HREF="Network-Socket.html#t%3ASocket"
>Socket</A
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="section1"
><A NAME="10"
><A NAME="10"
>Internal
</A
></A
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="doc"
>The following are exported ONLY for use in the BSD module and
 should not be used anywhere else.
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:packFamily"
><A NAME="v%3ApackFamily"
></A
></A
><B
>packFamily</B
> :: <A HREF="Network-Socket.html#t%3AFamily"
>Family</A
> -&gt; <A HREF="../base/Foreign-C-Types.html#t%3ACInt"
>CInt</A
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:unpackFamily"
><A NAME="v%3AunpackFamily"
></A
></A
><B
>unpackFamily</B
> :: <A HREF="../base/Foreign-C-Types.html#t%3ACInt"
>CInt</A
> -&gt; <A HREF="Network-Socket.html#t%3AFamily"
>Family</A
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:packSocketType"
><A NAME="v%3ApackSocketType"
></A
></A
><B
>packSocketType</B
> :: <A HREF="Network-Socket.html#t%3ASocketType"
>SocketType</A
> -&gt; <A HREF="../base/Foreign-C-Types.html#t%3ACInt"
>CInt</A
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:throwSocketErrorIfMinus1_"
><A NAME="v%3AthrowSocketErrorIfMinus1_"
></A
></A
><B
>throwSocketErrorIfMinus1_</B
></TD
></TR
><TR
><TD CLASS="body"
><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
><TR
><TD CLASS="arg"
>:: <A HREF="../base/Prelude.html#t%3ANum"
>Num</A
> a</TD
><TD CLASS="rdoc"
></TD
></TR
><TR
><TD CLASS="arg"
>=&gt; <A HREF="../base/Data-Char.html#t%3AString"
>String</A
></TD
><TD CLASS="rdoc"
>textual description of the location
</TD
></TR
><TR
><TD CLASS="arg"
>-&gt; <A HREF="../base/System-IO.html#t%3AIO"
>IO</A
> a</TD
><TD CLASS="rdoc"
>the <TT
><A HREF="../base/System-IO.html#t%3AIO"
>IO</A
></TT
> operation to be executed
</TD
></TR
><TR
><TD CLASS="arg"
>-&gt; <A HREF="../base/System-IO.html#t%3AIO"
>IO</A
> <A HREF="../ghc-prim/GHC-Unit.html#t%3A%28%29"
>()</A
></TD
><TD CLASS="rdoc"
></TD
></TR
><TR
><TD CLASS="ndoc" COLSPAN="2"
>Throw an <TT
><A HREF="../base/System-IO-Error.html#t%3AIOError"
>IOError</A
></TT
> corresponding to the current socket error if
 the IO action returns a result of <TT
>-1</TT
>.  Discards the result of the
 IO action after error handling.
</TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="botbar"
>Produced by <A HREF="http://www.haskell.org/haddock/"
>Haddock</A
> version 2.4.2</TD
></TR
></TABLE
></BODY
></HTML
>