Sophie

Sophie

distrib > Mandriva > 2010.0 > i586 > media > contrib-release > by-pkgid > 70ec89744a04da80369b4702b2c37256 > files > 1491

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

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!--Rendered using the Haskell Html Library v0.2-->
<HTML
><HEAD
><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8"
><TITLE
>Network.Socket.Internal</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-Internal.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.Internal</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"
>Socket addresses
</A
></DT
><DT
><A HREF="#2"
>Protocol families
</A
></DT
><DT
><A HREF="#3"
>Socket error functions
</A
></DT
><DT
><A HREF="#4"
>Guards for socket operations that may fail
</A
></DT
><DT
><A HREF="#5"
>Initialization
</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"
>A module containing semi-public Network.Socket internals.
 Modules which extend the Network.Socket module will need to use
 this module while ideally most users will be able to make do with
 the public interface.
</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"
>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"
><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"
><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-Internal.html#t%3APortNumber"
>PortNumber</A
> <A HREF="Network-Socket-Internal.html#t%3AHostAddress"
>HostAddress</A
></TD
></TR
><TR
><TD CLASS="decl"
>| <A HREF="#v%3ASockAddrInet6"
>SockAddrInet6</A
> <A HREF="Network-Socket-Internal.html#t%3APortNumber"
>PortNumber</A
> <A HREF="Network-Socket-Internal.html#t%3AFlowInfo"
>FlowInfo</A
> <A HREF="Network-Socket-Internal.html#t%3AHostAddress6"
>HostAddress6</A
> <A HREF="Network-Socket-Internal.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"
><A HREF="#v%3ApeekSockAddr"
>peekSockAddr</A
> :: <A HREF="../base/Foreign-Ptr.html#t%3APtr"
>Ptr</A
> <A HREF="Network-Socket-Internal.html#t%3ASockAddr"
>SockAddr</A
> -&gt; <A HREF="../base/System-IO.html#t%3AIO"
>IO</A
> <A HREF="Network-Socket-Internal.html#t%3ASockAddr"
>SockAddr</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3ApokeSockAddr"
>pokeSockAddr</A
> ::  <A HREF="../base/Foreign-Ptr.html#t%3APtr"
>Ptr</A
> a -&gt; <A HREF="Network-Socket-Internal.html#t%3ASockAddr"
>SockAddr</A
> -&gt; <A HREF="../base/System-IO.html#t%3AIO"
>IO</A
> <A HREF="../ghc-prim/GHC-Unit.html#t%3A%28%29"
>()</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AsizeOfSockAddr"
>sizeOfSockAddr</A
> :: <A HREF="Network-Socket-Internal.html#t%3ASockAddr"
>SockAddr</A
> -&gt; <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%3AsizeOfSockAddrByFamily"
>sizeOfSockAddrByFamily</A
> :: <A HREF="Network-Socket-Internal.html#t%3AFamily"
>Family</A
> -&gt; <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%3AwithSockAddr"
>withSockAddr</A
> ::  <A HREF="Network-Socket-Internal.html#t%3ASockAddr"
>SockAddr</A
> -&gt; (<A HREF="../base/Foreign-Ptr.html#t%3APtr"
>Ptr</A
> <A HREF="Network-Socket-Internal.html#t%3ASockAddr"
>SockAddr</A
> -&gt; <A HREF="../ghc-prim/GHC-Types.html#t%3AInt"
>Int</A
> -&gt; <A HREF="../base/System-IO.html#t%3AIO"
>IO</A
> a) -&gt; <A HREF="../base/System-IO.html#t%3AIO"
>IO</A
> a</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AwithNewSockAddr"
>withNewSockAddr</A
> ::  <A HREF="Network-Socket-Internal.html#t%3AFamily"
>Family</A
> -&gt; (<A HREF="../base/Foreign-Ptr.html#t%3APtr"
>Ptr</A
> <A HREF="Network-Socket-Internal.html#t%3ASockAddr"
>SockAddr</A
> -&gt; <A HREF="../ghc-prim/GHC-Types.html#t%3AInt"
>Int</A
> -&gt; <A HREF="../base/System-IO.html#t%3AIO"
>IO</A
> a) -&gt; <A HREF="../base/System-IO.html#t%3AIO"
>IO</A
> 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"
><A HREF="#v%3AthrowSocketError"
>throwSocketError</A
> ::  <A HREF="../base/Data-Char.html#t%3AString"
>String</A
> -&gt; <A HREF="../base/System-IO.html#t%3AIO"
>IO</A
> a</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AthrowSocketErrorIfMinus1_"
>throwSocketErrorIfMinus1_</A
> :: <A HREF="../base/Prelude.html#t%3ANum"
>Num</A
> a =&gt; <A HREF="../base/Data-Char.html#t%3AString"
>String</A
> -&gt; <A HREF="../base/System-IO.html#t%3AIO"
>IO</A
> a -&gt; <A HREF="../base/System-IO.html#t%3AIO"
>IO</A
> <A HREF="../ghc-prim/GHC-Unit.html#t%3A%28%29"
>()</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AthrowSocketErrorIfMinus1Retry"
>throwSocketErrorIfMinus1Retry</A
> :: <A HREF="../base/Prelude.html#t%3ANum"
>Num</A
> a =&gt; <A HREF="../base/Data-Char.html#t%3AString"
>String</A
> -&gt; <A HREF="../base/System-IO.html#t%3AIO"
>IO</A
> a -&gt; <A HREF="../base/System-IO.html#t%3AIO"
>IO</A
> a</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AthrowSocketErrorIfMinus1RetryMayBlock"
>throwSocketErrorIfMinus1RetryMayBlock</A
> :: <A HREF="../base/Prelude.html#t%3ANum"
>Num</A
> a =&gt; <A HREF="../base/Data-Char.html#t%3AString"
>String</A
> -&gt; <A HREF="../base/System-IO.html#t%3AIO"
>IO</A
> b -&gt; <A HREF="../base/System-IO.html#t%3AIO"
>IO</A
> a -&gt; <A HREF="../base/System-IO.html#t%3AIO"
>IO</A
> a</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AwithSocketsDo"
>withSocketsDo</A
> ::  <A HREF="../base/System-IO.html#t%3AIO"
>IO</A
> a -&gt; <A HREF="../base/System-IO.html#t%3AIO"
>IO</A
> a</TD
></TR
></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"
>Socket addresses
</A
></A
></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"
>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-Internal.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-Internal.html#t%3APortNumber"
>PortNumber</A
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="../base/Prelude.html#t%3AIntegral"
>Integral</A
> <A HREF="Network-Socket-Internal.html#t%3APortNumber"
>PortNumber</A
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="../base/Prelude.html#t%3ANum"
>Num</A
> <A HREF="Network-Socket-Internal.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-Internal.html#t%3APortNumber"
>PortNumber</A
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="../base/Prelude.html#t%3AReal"
>Real</A
> <A HREF="Network-Socket-Internal.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-Internal.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-Internal.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-Internal.html#t%3APortNumber"
>PortNumber</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-Internal.html#t%3APortNumber"
>PortNumber</A
> <A HREF="Network-Socket-Internal.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-Internal.html#t%3APortNumber"
>PortNumber</A
> <A HREF="Network-Socket-Internal.html#t%3AFlowInfo"
>FlowInfo</A
> <A HREF="Network-Socket-Internal.html#t%3AHostAddress6"
>HostAddress6</A
> <A HREF="Network-Socket-Internal.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-Internal.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-Internal.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-Internal.html#t%3ASockAddr"
>SockAddr</A
></TD
></TR
></TABLE
></DIV
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:peekSockAddr"
><A NAME="v%3ApeekSockAddr"
></A
></A
><B
>peekSockAddr</B
> :: <A HREF="../base/Foreign-Ptr.html#t%3APtr"
>Ptr</A
> <A HREF="Network-Socket-Internal.html#t%3ASockAddr"
>SockAddr</A
> -&gt; <A HREF="../base/System-IO.html#t%3AIO"
>IO</A
> <A HREF="Network-Socket-Internal.html#t%3ASockAddr"
>SockAddr</A
></TD
></TR
><TR
><TD CLASS="doc"
>Read a <TT
><A HREF="Network-Socket-Internal.html#t%3ASockAddr"
>SockAddr</A
></TT
> from the given memory location.
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:pokeSockAddr"
><A NAME="v%3ApokeSockAddr"
></A
></A
><B
>pokeSockAddr</B
> ::  <A HREF="../base/Foreign-Ptr.html#t%3APtr"
>Ptr</A
> a -&gt; <A HREF="Network-Socket-Internal.html#t%3ASockAddr"
>SockAddr</A
> -&gt; <A HREF="../base/System-IO.html#t%3AIO"
>IO</A
> <A HREF="../ghc-prim/GHC-Unit.html#t%3A%28%29"
>()</A
></TD
></TR
><TR
><TD CLASS="doc"
>Write the given <TT
><A HREF="Network-Socket-Internal.html#t%3ASockAddr"
>SockAddr</A
></TT
> to the given memory location.
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:sizeOfSockAddr"
><A NAME="v%3AsizeOfSockAddr"
></A
></A
><B
>sizeOfSockAddr</B
> :: <A HREF="Network-Socket-Internal.html#t%3ASockAddr"
>SockAddr</A
> -&gt; <A HREF="../ghc-prim/GHC-Types.html#t%3AInt"
>Int</A
></TD
></TR
><TR
><TD CLASS="doc"
>Computes the storage requirements (in bytes) of the given
 <TT
><A HREF="Network-Socket-Internal.html#t%3ASockAddr"
>SockAddr</A
></TT
>.  This function differs from <TT
><A HREF="../base/Foreign-Storable.html#v%3AsizeOf"
>sizeOf</A
></TT
>
 in that the value of the argument <EM
>is</EM
> used.
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:sizeOfSockAddrByFamily"
><A NAME="v%3AsizeOfSockAddrByFamily"
></A
></A
><B
>sizeOfSockAddrByFamily</B
> :: <A HREF="Network-Socket-Internal.html#t%3AFamily"
>Family</A
> -&gt; <A HREF="../ghc-prim/GHC-Types.html#t%3AInt"
>Int</A
></TD
></TR
><TR
><TD CLASS="doc"
>Computes the storage requirements (in bytes) required for a
 <TT
><A HREF="Network-Socket-Internal.html#t%3ASockAddr"
>SockAddr</A
></TT
> with the given <TT
><A HREF="Network-Socket-Internal.html#t%3AFamily"
>Family</A
></TT
>.
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:withSockAddr"
><A NAME="v%3AwithSockAddr"
></A
></A
><B
>withSockAddr</B
> ::  <A HREF="Network-Socket-Internal.html#t%3ASockAddr"
>SockAddr</A
> -&gt; (<A HREF="../base/Foreign-Ptr.html#t%3APtr"
>Ptr</A
> <A HREF="Network-Socket-Internal.html#t%3ASockAddr"
>SockAddr</A
> -&gt; <A HREF="../ghc-prim/GHC-Types.html#t%3AInt"
>Int</A
> -&gt; <A HREF="../base/System-IO.html#t%3AIO"
>IO</A
> a) -&gt; <A HREF="../base/System-IO.html#t%3AIO"
>IO</A
> a</TD
></TR
><TR
><TD CLASS="doc"
>Use a <TT
><A HREF="Network-Socket-Internal.html#t%3ASockAddr"
>SockAddr</A
></TT
> with a function requiring a pointer to a
 <TT
><A HREF="Network-Socket-Internal.html#t%3ASockAddr"
>SockAddr</A
></TT
> and the length of that <TT
><A HREF="Network-Socket-Internal.html#t%3ASockAddr"
>SockAddr</A
></TT
>.
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:withNewSockAddr"
><A NAME="v%3AwithNewSockAddr"
></A
></A
><B
>withNewSockAddr</B
> ::  <A HREF="Network-Socket-Internal.html#t%3AFamily"
>Family</A
> -&gt; (<A HREF="../base/Foreign-Ptr.html#t%3APtr"
>Ptr</A
> <A HREF="Network-Socket-Internal.html#t%3ASockAddr"
>SockAddr</A
> -&gt; <A HREF="../ghc-prim/GHC-Types.html#t%3AInt"
>Int</A
> -&gt; <A HREF="../base/System-IO.html#t%3AIO"
>IO</A
> a) -&gt; <A HREF="../base/System-IO.html#t%3AIO"
>IO</A
> a</TD
></TR
><TR
><TD CLASS="doc"
>Create a new <TT
><A HREF="Network-Socket-Internal.html#t%3ASockAddr"
>SockAddr</A
></TT
> for use with a function requiring a
 pointer to a <TT
><A HREF="Network-Socket-Internal.html#t%3ASockAddr"
>SockAddr</A
></TT
> and the length of that <TT
><A HREF="Network-Socket-Internal.html#t%3ASockAddr"
>SockAddr</A
></TT
>.
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="section1"
><A NAME="2"
><A NAME="2"
>Protocol families
</A
></A
></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-Internal.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-Internal.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-Internal.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-Internal.html#t%3AFamily"
>Family</A
></TD
></TR
></TABLE
></DIV
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="section1"
><A NAME="3"
><A NAME="3"
>Socket error functions
</A
></A
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:throwSocketError"
><A NAME="v%3AthrowSocketError"
></A
></A
><B
>throwSocketError</B
></TD
></TR
><TR
><TD CLASS="body"
><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
><TR
><TD CLASS="arg"
>:: </TD
><TD CLASS="rdoc"
></TD
></TR
><TR
><TD CLASS="arg"
>=&gt; <A HREF="../base/Data-Char.html#t%3AString"
>String</A
></TD
><TD CLASS="rdoc"
>textual description of the error location
</TD
></TR
><TR
><TD CLASS="arg"
>-&gt; <A HREF="../base/System-IO.html#t%3AIO"
>IO</A
> 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.
</TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="section1"
><A NAME="4"
><A NAME="4"
>Guards for socket operations that may fail
</A
></A
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:throwSocketErrorIfMinus1_"
><A NAME="v%3AthrowSocketErrorIfMinus1_"
></A
></A
><B
>throwSocketErrorIfMinus1_</B
></TD
></TR
><TR
><TD CLASS="body"
><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
><TR
><TD CLASS="arg"
>:: <A HREF="../base/Prelude.html#t%3ANum"
>Num</A
> a</TD
><TD CLASS="rdoc"
></TD
></TR
><TR
><TD CLASS="arg"
>=&gt; <A HREF="../base/Data-Char.html#t%3AString"
>String</A
></TD
><TD CLASS="rdoc"
>textual description of the location
</TD
></TR
><TR
><TD CLASS="arg"
>-&gt; <A HREF="../base/System-IO.html#t%3AIO"
>IO</A
> a</TD
><TD CLASS="rdoc"
>the <TT
><A HREF="../base/System-IO.html#t%3AIO"
>IO</A
></TT
> operation to be executed
</TD
></TR
><TR
><TD CLASS="arg"
>-&gt; <A HREF="../base/System-IO.html#t%3AIO"
>IO</A
> <A HREF="../ghc-prim/GHC-Unit.html#t%3A%28%29"
>()</A
></TD
><TD CLASS="rdoc"
></TD
></TR
><TR
><TD CLASS="ndoc" COLSPAN="2"
>Throw an <TT
><A HREF="../base/System-IO-Error.html#t%3AIOError"
>IOError</A
></TT
> corresponding to the current socket error if
 the IO action returns a result of <TT
>-1</TT
>.  Discards the result of the
 IO action after error handling.
</TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:throwSocketErrorIfMinus1Retry"
><A NAME="v%3AthrowSocketErrorIfMinus1Retry"
></A
></A
><B
>throwSocketErrorIfMinus1Retry</B
></TD
></TR
><TR
><TD CLASS="body"
><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
><TR
><TD CLASS="arg"
>:: <A HREF="../base/Prelude.html#t%3ANum"
>Num</A
> a</TD
><TD CLASS="rdoc"
></TD
></TR
><TR
><TD CLASS="arg"
>=&gt; <A HREF="../base/Data-Char.html#t%3AString"
>String</A
></TD
><TD CLASS="rdoc"
>textual description of the location
</TD
></TR
><TR
><TD CLASS="arg"
>-&gt; <A HREF="../base/System-IO.html#t%3AIO"
>IO</A
> a</TD
><TD CLASS="rdoc"
>the <TT
><A HREF="../base/System-IO.html#t%3AIO"
>IO</A
></TT
> operation to be executed
</TD
></TR
><TR
><TD CLASS="arg"
>-&gt; <A HREF="../base/System-IO.html#t%3AIO"
>IO</A
> a</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
>, but retries in case of an
 interrupted operation.
</TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:throwSocketErrorIfMinus1RetryMayBlock"
><A NAME="v%3AthrowSocketErrorIfMinus1RetryMayBlock"
></A
></A
><B
>throwSocketErrorIfMinus1RetryMayBlock</B
></TD
></TR
><TR
><TD CLASS="body"
><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
><TR
><TD CLASS="arg"
>:: <A HREF="../base/Prelude.html#t%3ANum"
>Num</A
> a</TD
><TD CLASS="rdoc"
></TD
></TR
><TR
><TD CLASS="arg"
>=&gt; <A HREF="../base/Data-Char.html#t%3AString"
>String</A
></TD
><TD CLASS="rdoc"
>textual description of the location
</TD
></TR
><TR
><TD CLASS="arg"
>-&gt; <A HREF="../base/System-IO.html#t%3AIO"
>IO</A
> b</TD
><TD CLASS="rdoc"
>action to execute before retrying if an
   immediate retry would block
</TD
></TR
><TR
><TD CLASS="arg"
>-&gt; <A HREF="../base/System-IO.html#t%3AIO"
>IO</A
> a</TD
><TD CLASS="rdoc"
>the <TT
><A HREF="../base/System-IO.html#t%3AIO"
>IO</A
></TT
> operation to be executed
</TD
></TR
><TR
><TD CLASS="arg"
>-&gt; <A HREF="../base/System-IO.html#t%3AIO"
>IO</A
> a</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
>, but retries in case of an
 interrupted operation.  Checks for operations that would block and
 executes an alternative action before retrying in that case.
</TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="section1"
><A NAME="5"
><A NAME="5"
>Initialization
</A
></A
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:withSocketsDo"
><A NAME="v%3AwithSocketsDo"
></A
></A
><B
>withSocketsDo</B
> ::  <A HREF="../base/System-IO.html#t%3AIO"
>IO</A
> a -&gt; <A HREF="../base/System-IO.html#t%3AIO"
>IO</A
> a</TD
></TR
><TR
><TD CLASS="doc"
><P
>On Windows operating systems, the networking subsystem has to be
initialised using <TT
><A HREF="Network-Socket-Internal.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="botbar"
>Produced by <A HREF="http://www.haskell.org/haddock/"
>Haddock</A
> version 2.4.2</TD
></TR
></TABLE
></BODY
></HTML
>