<!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 > -> <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 > -> <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 > -> <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 >] -> <A HREF="../ghc-prim/GHC-Bool.html#t%3ABool" >Bool</A > -> <A HREF="../ghc-prim/GHC-Bool.html#t%3ABool" >Bool</A > -> <A HREF="Network-Socket.html#t%3ASockAddr" >SockAddr</A > -> <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 > -> <A HREF="Network-Socket.html#t%3ASocketType" >SocketType</A > -> <A HREF="Network-Socket.html#t%3AProtocolNumber" >ProtocolNumber</A > -> <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 > -> <A HREF="Network-Socket.html#t%3ASocketType" >SocketType</A > -> <A HREF="Network-Socket.html#t%3AProtocolNumber" >ProtocolNumber</A > -> <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 > -> <A HREF="Network-Socket.html#t%3ASockAddr" >SockAddr</A > -> <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 > -> <A HREF="Network-Socket.html#t%3ASockAddr" >SockAddr</A > -> <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 > -> <A HREF="../ghc-prim/GHC-Types.html#t%3AInt" >Int</A > -> <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 > -> <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 > -> <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 > -> <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 > -> <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 > -> <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 > -> <A HREF="../base/System-IO.html#t%3AIOMode" >IOMode</A > -> <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 > -> <A HREF="../base/Data-Char.html#t%3AString" >String</A > -> <A HREF="Network-Socket.html#t%3ASockAddr" >SockAddr</A > -> <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 > -> <A HREF="../base/Foreign-Ptr.html#t%3APtr" >Ptr</A > a -> <A HREF="../ghc-prim/GHC-Types.html#t%3AInt" >Int</A > -> <A HREF="Network-Socket.html#t%3ASockAddr" >SockAddr</A > -> <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 > -> <A HREF="../ghc-prim/GHC-Types.html#t%3AInt" >Int</A > -> <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 > -> <A HREF="../base/Foreign-Ptr.html#t%3APtr" >Ptr</A > a -> <A HREF="../ghc-prim/GHC-Types.html#t%3AInt" >Int</A > -> <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 > -> <A HREF="../base/Data-Char.html#t%3AString" >String</A > -> <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 > -> <A HREF="../ghc-prim/GHC-Types.html#t%3AInt" >Int</A > -> <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 > -> <A HREF="../ghc-prim/GHC-Types.html#t%3AInt" >Int</A > -> <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 > -> <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 > -> <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 > -> <A HREF="Network-Socket.html#t%3AShutdownCmd" >ShutdownCmd</A > -> <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 > -> <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 > -> <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 > -> <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 > -> <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 > -> <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 > -> <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 > -> <A HREF="Network-Socket.html#t%3ASocketOption" >SocketOption</A > -> <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 > -> <A HREF="Network-Socket.html#t%3ASocketOption" >SocketOption</A > -> <A HREF="../ghc-prim/GHC-Types.html#t%3AInt" >Int</A > -> <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 > -> <A HREF="../base/Foreign-C-Types.html#t%3ACInt" >CInt</A > -> <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 > -> <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 > -> <A HREF="../ghc-prim/GHC-Types.html#t%3AInt" >Int</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 > -> <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 > -> <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/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 -> <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 > -> <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 > -> <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="Network-Socket.html#t%3ASocketStatus" >SocketStatus</A > -> <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 > -> <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 > -> <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 > -> <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 => <A HREF="../base/Data-Char.html#t%3AString" >String</A > -> <A HREF="../base/System-IO.html#t%3AIO" >IO</A > a -> <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 > -> <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" >-> <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" >-> <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" >-> <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 <- 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 <- 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" >-> <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" >-> <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" >-> <A HREF="Network-Socket.html#t%3ASockAddr" >SockAddr</A ></TD ><TD CLASS="rdoc" >the address to look up </TD ></TR ><TR ><TD CLASS="arg" >-> <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, _) <- 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 > -> <A HREF="Network-Socket.html#t%3ASocketType" >SocketType</A > -> <A HREF="Network-Socket.html#t%3AProtocolNumber" >ProtocolNumber</A > -> <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 > -> <A HREF="Network-Socket.html#t%3ASocketType" >SocketType</A > -> <A HREF="Network-Socket.html#t%3AProtocolNumber" >ProtocolNumber</A > -> <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 > -> <A HREF="Network-Socket.html#t%3ASockAddr" >SockAddr</A > -> <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 > -> <A HREF="Network-Socket.html#t%3ASockAddr" >SockAddr</A > -> <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 > -> <A HREF="../ghc-prim/GHC-Types.html#t%3AInt" >Int</A > -> <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 > -> <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 > -> <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 > -> <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 > -> <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 > -> <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 > -> <A HREF="../base/System-IO.html#t%3AIOMode" >IOMode</A > -> <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 > -> <A HREF="../base/Data-Char.html#t%3AString" >String</A > -> <A HREF="Network-Socket.html#t%3ASockAddr" >SockAddr</A > -> <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 > -> <A HREF="../base/Foreign-Ptr.html#t%3APtr" >Ptr</A > a -> <A HREF="../ghc-prim/GHC-Types.html#t%3AInt" >Int</A > -> <A HREF="Network-Socket.html#t%3ASockAddr" >SockAddr</A > -> <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 > -> <A HREF="../ghc-prim/GHC-Types.html#t%3AInt" >Int</A > -> <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 > -> <A HREF="../base/Foreign-Ptr.html#t%3APtr" >Ptr</A > a -> <A HREF="../ghc-prim/GHC-Types.html#t%3AInt" >Int</A > -> <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 > -> <A HREF="../base/Data-Char.html#t%3AString" >String</A > -> <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 > -> <A HREF="../ghc-prim/GHC-Types.html#t%3AInt" >Int</A > -> <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 > -> <A HREF="../ghc-prim/GHC-Types.html#t%3AInt" >Int</A > -> <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 > -> <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 > -> <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 > -> <A HREF="Network-Socket.html#t%3AShutdownCmd" >ShutdownCmd</A > -> <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 > -> <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 > -> <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 > -> <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 > -> <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 > -> <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 > -> <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 > -> <A HREF="Network-Socket.html#t%3ASocketOption" >SocketOption</A > -> <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 > -> <A HREF="Network-Socket.html#t%3ASocketOption" >SocketOption</A > -> <A HREF="../ghc-prim/GHC-Types.html#t%3AInt" >Int</A > -> <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 > -> <A HREF="../base/Foreign-C-Types.html#t%3ACInt" >CInt</A > -> <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 > -> <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 > -> <A HREF="../ghc-prim/GHC-Types.html#t%3AInt" >Int</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 > -> <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 > -> <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/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 -> <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 > -> <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 > -> <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="Network-Socket.html#t%3ASocketStatus" >SocketStatus</A > -> <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 > -> <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 > -> <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 > -> <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" >=> <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" >-> <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" >-> <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 >