This file is indexed.

/usr/share/doc/libghc-network-doc/html/Network-Socket-Internal.html is in libghc-network-doc 2.6.3.1-3.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Network.Socket.Internal</title><link href="ocean.css" rel="stylesheet" type="text/css" title="Ocean" /><script src="haddock-util.js" type="text/javascript"></script><script src="file:///usr/share/javascript/mathjax/MathJax.js" type="text/javascript"></script><script type="text/javascript">//<![CDATA[
window.onload = function () {pageLoad();setSynopsis("mini_Network-Socket-Internal.html");};
//]]>
</script></head><body><div id="package-header"><ul class="links" id="page-menu"><li><a href="src/Network-Socket-Internal.html">Source</a></li><li><a href="index.html">Contents</a></li><li><a href="doc-index.html">Index</a></li></ul><p class="caption">network-2.6.3.1: Low-level networking interface</p></div><div id="content"><div id="module-header"><table class="info"><tr><th>Copyright</th><td>(c) The University of Glasgow 2001</td></tr><tr><th>License</th><td>BSD-style (see the file libraries/network/LICENSE)</td></tr><tr><th>Maintainer</th><td>libraries@haskell.org</td></tr><tr><th>Stability</th><td>provisional</td></tr><tr><th>Portability</th><td>portable</td></tr><tr><th>Safe Haskell</th><td>None</td></tr><tr><th>Language</th><td>Haskell98</td></tr></table><p class="caption">Network.Socket.Internal</p></div><div id="table-of-contents"><p class="caption">Contents</p><ul><li><a href="#g:1">Socket addresses</a></li><li><a href="#g:2">Protocol families</a></li><li><a href="#g:3">Socket error functions</a></li><li><a href="#g:4">Guards for socket operations that may fail</a><ul><li><a href="#g:5">Guards that wait and retry if the operation would block</a></li></ul></li><li><a href="#g:6">Initialization</a></li><li><a href="#g:7">Low-level helpers</a></li></ul></div><div id="description"><p class="caption">Description</p><div class="doc"><p>A module containing semi-public <code><a href="Network.html#v:Socket">Socket</a></code> internals.
 Modules which extend the <code><a href="Network.html#v:Socket">Socket</a></code> module will need to use
 this module while ideally most users will be able to make do with
 the public interface.</p></div></div><div id="synopsis"><p id="control.syn" class="caption expander" onclick="toggleSection('syn')">Synopsis</p><ul id="section.syn" class="hide" onclick="toggleSection('syn')"><li class="src short"><span class="keyword">type</span> <a href="#t:HostAddress">HostAddress</a> = <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Word.html#t:Word32">Word32</a></li><li class="src short"><span class="keyword">type</span> <a href="#t:HostAddress6">HostAddress6</a> = (<a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Word.html#t:Word32">Word32</a>, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Word.html#t:Word32">Word32</a>, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Word.html#t:Word32">Word32</a>, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Word.html#t:Word32">Word32</a>)</li><li class="src short"><span class="keyword">type</span> <a href="#t:FlowInfo">FlowInfo</a> = <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Word.html#t:Word32">Word32</a></li><li class="src short"><span class="keyword">type</span> <a href="#t:ScopeID">ScopeID</a> = <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Word.html#t:Word32">Word32</a></li><li class="src short"><span class="keyword">newtype</span> <a href="#t:PortNumber">PortNumber</a> = <a href="#v:PortNum">PortNum</a> <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Word.html#t:Word16">Word16</a></li><li class="src short"><span class="keyword">data</span> <a href="#t:SockAddr">SockAddr</a><ul class="subs"><li>= <a href="#v:SockAddrInet">SockAddrInet</a> <a href="Network-Socket-Internal.html#t:PortNumber">PortNumber</a> <a href="Network-Socket-Internal.html#t:HostAddress">HostAddress</a></li><li>| <a href="#v:SockAddrInet6">SockAddrInet6</a> <a href="Network-Socket-Internal.html#t:PortNumber">PortNumber</a> <a href="Network-Socket-Internal.html#t:FlowInfo">FlowInfo</a> <a href="Network-Socket-Internal.html#t:HostAddress6">HostAddress6</a> <a href="Network-Socket-Internal.html#t:ScopeID">ScopeID</a></li><li>| <a href="#v:SockAddrUnix">SockAddrUnix</a> <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-String.html#t:String">String</a></li><li>| <a href="#v:SockAddrCan">SockAddrCan</a> <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Int.html#t:Int32">Int32</a></li></ul></li><li class="src short"><a href="#v:peekSockAddr">peekSockAddr</a> :: <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Foreign-Ptr.html#t:Ptr">Ptr</a> <a href="Network-Socket-Internal.html#t:SockAddr">SockAddr</a> -&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/System-IO.html#t:IO">IO</a> <a href="Network-Socket-Internal.html#t:SockAddr">SockAddr</a></li><li class="src short"><a href="#v:pokeSockAddr">pokeSockAddr</a> :: <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Foreign-Ptr.html#t:Ptr">Ptr</a> a -&gt; <a href="Network-Socket-Internal.html#t:SockAddr">SockAddr</a> -&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/System-IO.html#t:IO">IO</a> ()</li><li class="src short"><a href="#v:sizeOfSockAddr">sizeOfSockAddr</a> :: <a href="Network-Socket-Internal.html#t:SockAddr">SockAddr</a> -&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Int.html#t:Int">Int</a></li><li class="src short"><a href="#v:sizeOfSockAddrByFamily">sizeOfSockAddrByFamily</a> :: <a href="Network-Socket-Internal.html#t:Family">Family</a> -&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Int.html#t:Int">Int</a></li><li class="src short"><a href="#v:withSockAddr">withSockAddr</a> :: <a href="Network-Socket-Internal.html#t:SockAddr">SockAddr</a> -&gt; (<a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Foreign-Ptr.html#t:Ptr">Ptr</a> <a href="Network-Socket-Internal.html#t:SockAddr">SockAddr</a> -&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Int.html#t:Int">Int</a> -&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/System-IO.html#t:IO">IO</a> a) -&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/System-IO.html#t:IO">IO</a> a</li><li class="src short"><a href="#v:withNewSockAddr">withNewSockAddr</a> :: <a href="Network-Socket-Internal.html#t:Family">Family</a> -&gt; (<a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Foreign-Ptr.html#t:Ptr">Ptr</a> <a href="Network-Socket-Internal.html#t:SockAddr">SockAddr</a> -&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Int.html#t:Int">Int</a> -&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/System-IO.html#t:IO">IO</a> a) -&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/System-IO.html#t:IO">IO</a> a</li><li class="src short"><span class="keyword">data</span> <a href="#t:Family">Family</a><ul class="subs"><li>= <a href="#v:AF_UNSPEC">AF_UNSPEC</a></li><li>| <a href="#v:AF_UNIX">AF_UNIX</a></li><li>| <a href="#v:AF_INET">AF_INET</a></li><li>| <a href="#v:AF_INET6">AF_INET6</a></li><li>| <a href="#v:AF_IMPLINK">AF_IMPLINK</a></li><li>| <a href="#v:AF_PUP">AF_PUP</a></li><li>| <a href="#v:AF_CHAOS">AF_CHAOS</a></li><li>| <a href="#v:AF_NS">AF_NS</a></li><li>| <a href="#v:AF_NBS">AF_NBS</a></li><li>| <a href="#v:AF_ECMA">AF_ECMA</a></li><li>| <a href="#v:AF_DATAKIT">AF_DATAKIT</a></li><li>| <a href="#v:AF_CCITT">AF_CCITT</a></li><li>| <a href="#v:AF_SNA">AF_SNA</a></li><li>| <a href="#v:AF_DECnet">AF_DECnet</a></li><li>| <a href="#v:AF_DLI">AF_DLI</a></li><li>| <a href="#v:AF_LAT">AF_LAT</a></li><li>| <a href="#v:AF_HYLINK">AF_HYLINK</a></li><li>| <a href="#v:AF_APPLETALK">AF_APPLETALK</a></li><li>| <a href="#v:AF_ROUTE">AF_ROUTE</a></li><li>| <a href="#v:AF_NETBIOS">AF_NETBIOS</a></li><li>| <a href="#v:AF_NIT">AF_NIT</a></li><li>| <a href="#v:AF_802">AF_802</a></li><li>| <a href="#v:AF_ISO">AF_ISO</a></li><li>| <a href="#v:AF_OSI">AF_OSI</a></li><li>| <a href="#v:AF_NETMAN">AF_NETMAN</a></li><li>| <a href="#v:AF_X25">AF_X25</a></li><li>| <a href="#v:AF_AX25">AF_AX25</a></li><li>| <a href="#v:AF_OSINET">AF_OSINET</a></li><li>| <a href="#v:AF_GOSSIP">AF_GOSSIP</a></li><li>| <a href="#v:AF_IPX">AF_IPX</a></li><li>| <a href="#v:Pseudo_AF_XTP">Pseudo_AF_XTP</a></li><li>| <a href="#v:AF_CTF">AF_CTF</a></li><li>| <a href="#v:AF_WAN">AF_WAN</a></li><li>| <a href="#v:AF_SDL">AF_SDL</a></li><li>| <a href="#v:AF_NETWARE">AF_NETWARE</a></li><li>| <a href="#v:AF_NDD">AF_NDD</a></li><li>| <a href="#v:AF_INTF">AF_INTF</a></li><li>| <a href="#v:AF_COIP">AF_COIP</a></li><li>| <a href="#v:AF_CNT">AF_CNT</a></li><li>| <a href="#v:Pseudo_AF_RTIP">Pseudo_AF_RTIP</a></li><li>| <a href="#v:Pseudo_AF_PIP">Pseudo_AF_PIP</a></li><li>| <a href="#v:AF_SIP">AF_SIP</a></li><li>| <a href="#v:AF_ISDN">AF_ISDN</a></li><li>| <a href="#v:Pseudo_AF_KEY">Pseudo_AF_KEY</a></li><li>| <a href="#v:AF_NATM">AF_NATM</a></li><li>| <a href="#v:AF_ARP">AF_ARP</a></li><li>| <a href="#v:Pseudo_AF_HDRCMPLT">Pseudo_AF_HDRCMPLT</a></li><li>| <a href="#v:AF_ENCAP">AF_ENCAP</a></li><li>| <a href="#v:AF_LINK">AF_LINK</a></li><li>| <a href="#v:AF_RAW">AF_RAW</a></li><li>| <a href="#v:AF_RIF">AF_RIF</a></li><li>| <a href="#v:AF_NETROM">AF_NETROM</a></li><li>| <a href="#v:AF_BRIDGE">AF_BRIDGE</a></li><li>| <a href="#v:AF_ATMPVC">AF_ATMPVC</a></li><li>| <a href="#v:AF_ROSE">AF_ROSE</a></li><li>| <a href="#v:AF_NETBEUI">AF_NETBEUI</a></li><li>| <a href="#v:AF_SECURITY">AF_SECURITY</a></li><li>| <a href="#v:AF_PACKET">AF_PACKET</a></li><li>| <a href="#v:AF_ASH">AF_ASH</a></li><li>| <a href="#v:AF_ECONET">AF_ECONET</a></li><li>| <a href="#v:AF_ATMSVC">AF_ATMSVC</a></li><li>| <a href="#v:AF_IRDA">AF_IRDA</a></li><li>| <a href="#v:AF_PPPOX">AF_PPPOX</a></li><li>| <a href="#v:AF_WANPIPE">AF_WANPIPE</a></li><li>| <a href="#v:AF_BLUETOOTH">AF_BLUETOOTH</a></li><li>| <a href="#v:AF_CAN">AF_CAN</a></li></ul></li><li class="src short"><a href="#v:throwSocketError">throwSocketError</a> :: <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-String.html#t:String">String</a> -&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/System-IO.html#t:IO">IO</a> a</li><li class="src short"><a href="#v:throwSocketErrorCode">throwSocketErrorCode</a> :: <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-String.html#t:String">String</a> -&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Foreign-C-Types.html#t:CInt">CInt</a> -&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/System-IO.html#t:IO">IO</a> a</li><li class="src short"><a href="#v:throwSocketErrorIfMinus1_">throwSocketErrorIfMinus1_</a> :: (<a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Eq.html#t:Eq">Eq</a> a, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Prelude.html#t:Num">Num</a> a) =&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-String.html#t:String">String</a> -&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/System-IO.html#t:IO">IO</a> a -&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/System-IO.html#t:IO">IO</a> ()</li><li class="src short"><a href="#v:throwSocketErrorIfMinus1Retry">throwSocketErrorIfMinus1Retry</a> :: (<a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Eq.html#t:Eq">Eq</a> a, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Prelude.html#t:Num">Num</a> a) =&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-String.html#t:String">String</a> -&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/System-IO.html#t:IO">IO</a> a -&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/System-IO.html#t:IO">IO</a> a</li><li class="src short"><a href="#v:throwSocketErrorIfMinus1Retry_">throwSocketErrorIfMinus1Retry_</a> :: (<a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Eq.html#t:Eq">Eq</a> a, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Prelude.html#t:Num">Num</a> a) =&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-String.html#t:String">String</a> -&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/System-IO.html#t:IO">IO</a> a -&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/System-IO.html#t:IO">IO</a> ()</li><li class="src short"><a href="#v:throwSocketErrorIfMinus1RetryMayBlock">throwSocketErrorIfMinus1RetryMayBlock</a> :: (<a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Eq.html#t:Eq">Eq</a> a, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Prelude.html#t:Num">Num</a> a) =&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-String.html#t:String">String</a> -&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/System-IO.html#t:IO">IO</a> b -&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/System-IO.html#t:IO">IO</a> a -&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/System-IO.html#t:IO">IO</a> a</li><li class="src short"><a href="#v:throwSocketErrorWaitRead">throwSocketErrorWaitRead</a> :: (<a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Eq.html#t:Eq">Eq</a> a, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Prelude.html#t:Num">Num</a> a) =&gt; <a href="Network-Socket.html#t:Socket">Socket</a> -&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-String.html#t:String">String</a> -&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/System-IO.html#t:IO">IO</a> a -&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/System-IO.html#t:IO">IO</a> a</li><li class="src short"><a href="#v:throwSocketErrorWaitWrite">throwSocketErrorWaitWrite</a> :: (<a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Eq.html#t:Eq">Eq</a> a, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Prelude.html#t:Num">Num</a> a) =&gt; <a href="Network-Socket.html#t:Socket">Socket</a> -&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-String.html#t:String">String</a> -&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/System-IO.html#t:IO">IO</a> a -&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/System-IO.html#t:IO">IO</a> a</li><li class="src short"><a href="#v:withSocketsDo">withSocketsDo</a> :: <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/System-IO.html#t:IO">IO</a> a -&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/System-IO.html#t:IO">IO</a> a</li><li class="src short"><a href="#v:zeroMemory">zeroMemory</a> :: <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Foreign-Ptr.html#t:Ptr">Ptr</a> a -&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Foreign-C-Types.html#t:CSize">CSize</a> -&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/System-IO.html#t:IO">IO</a> ()</li></ul></div><div id="interface"><h1 id="g:1">Socket addresses</h1><div class="top"><p class="src"><span class="keyword">type</span> <a id="t:HostAddress" class="def">HostAddress</a> = <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Word.html#t:Word32">Word32</a> <a href="src/Network-Socket-Types.html#HostAddress" class="link">Source</a> <a href="#t:HostAddress" class="selflink">#</a></p><div class="doc"><p>The raw network byte order number is read using host byte order.
 Therefore on little-endian architectures the byte order is swapped. For
 example <code>127.0.0.1</code> is represented as <code>0x0100007f</code> on little-endian hosts
 and as <code>0x7f000001</code> on big-endian hosts.</p><p>For direct manipulation prefer <code><a href="Network-Socket.html#v:hostAddressToTuple">hostAddressToTuple</a></code> and
 <code><a href="Network-Socket.html#v:tupleToHostAddress">tupleToHostAddress</a></code>.</p></div></div><div class="top"><p class="src"><span class="keyword">type</span> <a id="t:HostAddress6" class="def">HostAddress6</a> = (<a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Word.html#t:Word32">Word32</a>, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Word.html#t:Word32">Word32</a>, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Word.html#t:Word32">Word32</a>, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Word.html#t:Word32">Word32</a>) <a href="src/Network-Socket-Types.html#HostAddress6" class="link">Source</a> <a href="#t:HostAddress6" class="selflink">#</a></p><div class="doc"><p>Independent of endianness. For example <code>::1</code> is stored as <code>(0, 0, 0, 1)</code>.</p><p>For direct manipulation prefer <code><a href="Network-Socket.html#v:hostAddress6ToTuple">hostAddress6ToTuple</a></code> and
 <code><a href="Network-Socket.html#v:tupleToHostAddress6">tupleToHostAddress6</a></code>.</p></div></div><div class="top"><p class="src"><span class="keyword">type</span> <a id="t:FlowInfo" class="def">FlowInfo</a> = <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Word.html#t:Word32">Word32</a> <a href="src/Network-Socket-Types.html#FlowInfo" class="link">Source</a> <a href="#t:FlowInfo" class="selflink">#</a></p></div><div class="top"><p class="src"><span class="keyword">type</span> <a id="t:ScopeID" class="def">ScopeID</a> = <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Word.html#t:Word32">Word32</a> <a href="src/Network-Socket-Types.html#ScopeID" class="link">Source</a> <a href="#t:ScopeID" class="selflink">#</a></p></div><div class="top"><p class="src"><span class="keyword">newtype</span> <a id="t:PortNumber" class="def">PortNumber</a> <a href="src/Network-Socket-Types.html#PortNumber" class="link">Source</a> <a href="#t:PortNumber" class="selflink">#</a></p><div class="doc"><p>Use the <code>Num</code> instance (i.e. use a literal) to create a
 <code>PortNumber</code> value with the correct network-byte-ordering. You
 should not use the PortNum constructor. It will be removed in the
 next release.</p><pre class="screen"><code class="prompt">&gt;&gt;&gt; </code><strong class="userinput"><code>1 :: PortNumber
</code></strong>1
<code class="prompt">&gt;&gt;&gt; </code><strong class="userinput"><code>read &quot;1&quot; :: PortNumber
</code></strong>1
</pre></div><div class="subs constructors"><p class="caption">Constructors</p><table><tr><td class="src"><a id="v:PortNum" class="def">PortNum</a> <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Word.html#t:Word16">Word16</a></td><td class="doc"><div class="warning"><p>Deprecated: Do not use the PortNum constructor. Use the Num instance. PortNum will be removed in the next release.</p></div></td></tr></table></div><div class="subs instances"><p id="control.i:PortNumber" class="caption collapser" onclick="toggleSection('i:PortNumber')">Instances</p><div id="section.i:PortNumber" class="show"><table><tr><td class="src clearfix"><span class="inst-left"><span id="control.i:id:PortNumber:Enum:1" class="instance expander" onclick="toggleSection('i:id:PortNumber:Enum:1')"></span> <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Prelude.html#t:Enum">Enum</a> <a href="Network-Socket-Internal.html#t:PortNumber">PortNumber</a></span> <a href="src/Network-Socket-Types.html#line-766" class="link">Source</a> <a href="#t:PortNumber" class="selflink">#</a></td><td class="doc empty">&nbsp;</td></tr><tr><td colspan="2"><div id="section.i:id:PortNumber:Enum:1" class="inst-details hide"><div class="subs methods"><p class="caption">Methods</p><p class="src"><a href="#v:succ">succ</a> :: <a href="Network-Socket-Internal.html#t:PortNumber">PortNumber</a> -&gt; <a href="Network-Socket-Internal.html#t:PortNumber">PortNumber</a> <a href="#v:succ" class="selflink">#</a></p><p class="src"><a href="#v:pred">pred</a> :: <a href="Network-Socket-Internal.html#t:PortNumber">PortNumber</a> -&gt; <a href="Network-Socket-Internal.html#t:PortNumber">PortNumber</a> <a href="#v:pred" class="selflink">#</a></p><p class="src"><a href="#v:toEnum">toEnum</a> :: <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Int.html#t:Int">Int</a> -&gt; <a href="Network-Socket-Internal.html#t:PortNumber">PortNumber</a> <a href="#v:toEnum" class="selflink">#</a></p><p class="src"><a href="#v:fromEnum">fromEnum</a> :: <a href="Network-Socket-Internal.html#t:PortNumber">PortNumber</a> -&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Int.html#t:Int">Int</a> <a href="#v:fromEnum" class="selflink">#</a></p><p class="src"><a href="#v:enumFrom">enumFrom</a> :: <a href="Network-Socket-Internal.html#t:PortNumber">PortNumber</a> -&gt; [<a href="Network-Socket-Internal.html#t:PortNumber">PortNumber</a>] <a href="#v:enumFrom" class="selflink">#</a></p><p class="src"><a href="#v:enumFromThen">enumFromThen</a> :: <a href="Network-Socket-Internal.html#t:PortNumber">PortNumber</a> -&gt; <a href="Network-Socket-Internal.html#t:PortNumber">PortNumber</a> -&gt; [<a href="Network-Socket-Internal.html#t:PortNumber">PortNumber</a>] <a href="#v:enumFromThen" class="selflink">#</a></p><p class="src"><a href="#v:enumFromTo">enumFromTo</a> :: <a href="Network-Socket-Internal.html#t:PortNumber">PortNumber</a> -&gt; <a href="Network-Socket-Internal.html#t:PortNumber">PortNumber</a> -&gt; [<a href="Network-Socket-Internal.html#t:PortNumber">PortNumber</a>] <a href="#v:enumFromTo" class="selflink">#</a></p><p class="src"><a href="#v:enumFromThenTo">enumFromThenTo</a> :: <a href="Network-Socket-Internal.html#t:PortNumber">PortNumber</a> -&gt; <a href="Network-Socket-Internal.html#t:PortNumber">PortNumber</a> -&gt; <a href="Network-Socket-Internal.html#t:PortNumber">PortNumber</a> -&gt; [<a href="Network-Socket-Internal.html#t:PortNumber">PortNumber</a>] <a href="#v:enumFromThenTo" class="selflink">#</a></p></div></div></td></tr><tr><td class="src clearfix"><span class="inst-left"><span id="control.i:id:PortNumber:Eq:2" class="instance expander" onclick="toggleSection('i:id:PortNumber:Eq:2')"></span> <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Eq.html#t:Eq">Eq</a> <a href="Network-Socket-Internal.html#t:PortNumber">PortNumber</a></span> <a href="src/Network-Socket-Types.html#line-742" class="link">Source</a> <a href="#t:PortNumber" class="selflink">#</a></td><td class="doc empty">&nbsp;</td></tr><tr><td colspan="2"><div id="section.i:id:PortNumber:Eq:2" class="inst-details hide"><div class="subs methods"><p class="caption">Methods</p><p class="src"><a href="#v:-61--61-">(==)</a> :: <a href="Network-Socket-Internal.html#t:PortNumber">PortNumber</a> -&gt; <a href="Network-Socket-Internal.html#t:PortNumber">PortNumber</a> -&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Bool.html#t:Bool">Bool</a> <a href="#v:-61--61-" class="selflink">#</a></p><p class="src"><a href="#v:-47--61-">(/=)</a> :: <a href="Network-Socket-Internal.html#t:PortNumber">PortNumber</a> -&gt; <a href="Network-Socket-Internal.html#t:PortNumber">PortNumber</a> -&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Bool.html#t:Bool">Bool</a> <a href="#v:-47--61-" class="selflink">#</a></p></div></div></td></tr><tr><td class="src clearfix"><span class="inst-left"><span id="control.i:id:PortNumber:Integral:3" class="instance expander" onclick="toggleSection('i:id:PortNumber:Integral:3')"></span> <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Prelude.html#t:Integral">Integral</a> <a href="Network-Socket-Internal.html#t:PortNumber">PortNumber</a></span> <a href="src/Network-Socket-Types.html#line-783" class="link">Source</a> <a href="#t:PortNumber" class="selflink">#</a></td><td class="doc empty">&nbsp;</td></tr><tr><td colspan="2"><div id="section.i:id:PortNumber:Integral:3" class="inst-details hide"><div class="subs methods"><p class="caption">Methods</p><p class="src"><a href="#v:quot">quot</a> :: <a href="Network-Socket-Internal.html#t:PortNumber">PortNumber</a> -&gt; <a href="Network-Socket-Internal.html#t:PortNumber">PortNumber</a> -&gt; <a href="Network-Socket-Internal.html#t:PortNumber">PortNumber</a> <a href="#v:quot" class="selflink">#</a></p><p class="src"><a href="#v:rem">rem</a> :: <a href="Network-Socket-Internal.html#t:PortNumber">PortNumber</a> -&gt; <a href="Network-Socket-Internal.html#t:PortNumber">PortNumber</a> -&gt; <a href="Network-Socket-Internal.html#t:PortNumber">PortNumber</a> <a href="#v:rem" class="selflink">#</a></p><p class="src"><a href="#v:div">div</a> :: <a href="Network-Socket-Internal.html#t:PortNumber">PortNumber</a> -&gt; <a href="Network-Socket-Internal.html#t:PortNumber">PortNumber</a> -&gt; <a href="Network-Socket-Internal.html#t:PortNumber">PortNumber</a> <a href="#v:div" class="selflink">#</a></p><p class="src"><a href="#v:mod">mod</a> :: <a href="Network-Socket-Internal.html#t:PortNumber">PortNumber</a> -&gt; <a href="Network-Socket-Internal.html#t:PortNumber">PortNumber</a> -&gt; <a href="Network-Socket-Internal.html#t:PortNumber">PortNumber</a> <a href="#v:mod" class="selflink">#</a></p><p class="src"><a href="#v:quotRem">quotRem</a> :: <a href="Network-Socket-Internal.html#t:PortNumber">PortNumber</a> -&gt; <a href="Network-Socket-Internal.html#t:PortNumber">PortNumber</a> -&gt; (<a href="Network-Socket-Internal.html#t:PortNumber">PortNumber</a>, <a href="Network-Socket-Internal.html#t:PortNumber">PortNumber</a>) <a href="#v:quotRem" class="selflink">#</a></p><p class="src"><a href="#v:divMod">divMod</a> :: <a href="Network-Socket-Internal.html#t:PortNumber">PortNumber</a> -&gt; <a href="Network-Socket-Internal.html#t:PortNumber">PortNumber</a> -&gt; (<a href="Network-Socket-Internal.html#t:PortNumber">PortNumber</a>, <a href="Network-Socket-Internal.html#t:PortNumber">PortNumber</a>) <a href="#v:divMod" class="selflink">#</a></p><p class="src"><a href="#v:toInteger">toInteger</a> :: <a href="Network-Socket-Internal.html#t:PortNumber">PortNumber</a> -&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Prelude.html#t:Integer">Integer</a> <a href="#v:toInteger" class="selflink">#</a></p></div></div></td></tr><tr><td class="src clearfix"><span class="inst-left"><span id="control.i:id:PortNumber:Num:4" class="instance expander" onclick="toggleSection('i:id:PortNumber:Num:4')"></span> <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Prelude.html#t:Num">Num</a> <a href="Network-Socket-Internal.html#t:PortNumber">PortNumber</a></span> <a href="src/Network-Socket-Types.html#line-770" class="link">Source</a> <a href="#t:PortNumber" class="selflink">#</a></td><td class="doc empty">&nbsp;</td></tr><tr><td colspan="2"><div id="section.i:id:PortNumber:Num:4" class="inst-details hide"><div class="subs methods"><p class="caption">Methods</p><p class="src"><a href="#v:-43-">(+)</a> :: <a href="Network-Socket-Internal.html#t:PortNumber">PortNumber</a> -&gt; <a href="Network-Socket-Internal.html#t:PortNumber">PortNumber</a> -&gt; <a href="Network-Socket-Internal.html#t:PortNumber">PortNumber</a> <a href="#v:-43-" class="selflink">#</a></p><p class="src"><a href="#v:-45-">(-)</a> :: <a href="Network-Socket-Internal.html#t:PortNumber">PortNumber</a> -&gt; <a href="Network-Socket-Internal.html#t:PortNumber">PortNumber</a> -&gt; <a href="Network-Socket-Internal.html#t:PortNumber">PortNumber</a> <a href="#v:-45-" class="selflink">#</a></p><p class="src"><a href="#v:-42-">(*)</a> :: <a href="Network-Socket-Internal.html#t:PortNumber">PortNumber</a> -&gt; <a href="Network-Socket-Internal.html#t:PortNumber">PortNumber</a> -&gt; <a href="Network-Socket-Internal.html#t:PortNumber">PortNumber</a> <a href="#v:-42-" class="selflink">#</a></p><p class="src"><a href="#v:negate">negate</a> :: <a href="Network-Socket-Internal.html#t:PortNumber">PortNumber</a> -&gt; <a href="Network-Socket-Internal.html#t:PortNumber">PortNumber</a> <a href="#v:negate" class="selflink">#</a></p><p class="src"><a href="#v:abs">abs</a> :: <a href="Network-Socket-Internal.html#t:PortNumber">PortNumber</a> -&gt; <a href="Network-Socket-Internal.html#t:PortNumber">PortNumber</a> <a href="#v:abs" class="selflink">#</a></p><p class="src"><a href="#v:signum">signum</a> :: <a href="Network-Socket-Internal.html#t:PortNumber">PortNumber</a> -&gt; <a href="Network-Socket-Internal.html#t:PortNumber">PortNumber</a> <a href="#v:signum" class="selflink">#</a></p><p class="src"><a href="#v:fromInteger">fromInteger</a> :: <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Prelude.html#t:Integer">Integer</a> -&gt; <a href="Network-Socket-Internal.html#t:PortNumber">PortNumber</a> <a href="#v:fromInteger" class="selflink">#</a></p></div></div></td></tr><tr><td class="src clearfix"><span class="inst-left"><span id="control.i:id:PortNumber:Ord:5" class="instance expander" onclick="toggleSection('i:id:PortNumber:Ord:5')"></span> <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Ord.html#t:Ord">Ord</a> <a href="Network-Socket-Internal.html#t:PortNumber">PortNumber</a></span> <a href="src/Network-Socket-Types.html#line-742" class="link">Source</a> <a href="#t:PortNumber" class="selflink">#</a></td><td class="doc empty">&nbsp;</td></tr><tr><td colspan="2"><div id="section.i:id:PortNumber:Ord:5" class="inst-details hide"><div class="subs methods"><p class="caption">Methods</p><p class="src"><a href="#v:compare">compare</a> :: <a href="Network-Socket-Internal.html#t:PortNumber">PortNumber</a> -&gt; <a href="Network-Socket-Internal.html#t:PortNumber">PortNumber</a> -&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Ord.html#t:Ordering">Ordering</a> <a href="#v:compare" class="selflink">#</a></p><p class="src"><a href="#v:-60-">(&lt;)</a> :: <a href="Network-Socket-Internal.html#t:PortNumber">PortNumber</a> -&gt; <a href="Network-Socket-Internal.html#t:PortNumber">PortNumber</a> -&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Bool.html#t:Bool">Bool</a> <a href="#v:-60-" class="selflink">#</a></p><p class="src"><a href="#v:-60--61-">(&lt;=)</a> :: <a href="Network-Socket-Internal.html#t:PortNumber">PortNumber</a> -&gt; <a href="Network-Socket-Internal.html#t:PortNumber">PortNumber</a> -&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Bool.html#t:Bool">Bool</a> <a href="#v:-60--61-" class="selflink">#</a></p><p class="src"><a href="#v:-62-">(&gt;)</a> :: <a href="Network-Socket-Internal.html#t:PortNumber">PortNumber</a> -&gt; <a href="Network-Socket-Internal.html#t:PortNumber">PortNumber</a> -&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Bool.html#t:Bool">Bool</a> <a href="#v:-62-" class="selflink">#</a></p><p class="src"><a href="#v:-62--61-">(&gt;=)</a> :: <a href="Network-Socket-Internal.html#t:PortNumber">PortNumber</a> -&gt; <a href="Network-Socket-Internal.html#t:PortNumber">PortNumber</a> -&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Bool.html#t:Bool">Bool</a> <a href="#v:-62--61-" class="selflink">#</a></p><p class="src"><a href="#v:max">max</a> :: <a href="Network-Socket-Internal.html#t:PortNumber">PortNumber</a> -&gt; <a href="Network-Socket-Internal.html#t:PortNumber">PortNumber</a> -&gt; <a href="Network-Socket-Internal.html#t:PortNumber">PortNumber</a> <a href="#v:max" class="selflink">#</a></p><p class="src"><a href="#v:min">min</a> :: <a href="Network-Socket-Internal.html#t:PortNumber">PortNumber</a> -&gt; <a href="Network-Socket-Internal.html#t:PortNumber">PortNumber</a> -&gt; <a href="Network-Socket-Internal.html#t:PortNumber">PortNumber</a> <a href="#v:min" class="selflink">#</a></p></div></div></td></tr><tr><td class="src clearfix"><span class="inst-left"><span id="control.i:id:PortNumber:Read:6" class="instance expander" onclick="toggleSection('i:id:PortNumber:Read:6')"></span> <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Text-Read.html#t:Read">Read</a> <a href="Network-Socket-Internal.html#t:PortNumber">PortNumber</a></span> <a href="src/Network-Socket-Types.html#line-752" class="link">Source</a> <a href="#t:PortNumber" class="selflink">#</a></td><td class="doc empty">&nbsp;</td></tr><tr><td colspan="2"><div id="section.i:id:PortNumber:Read:6" class="inst-details hide"><div class="subs methods"><p class="caption">Methods</p><p class="src"><a href="#v:readsPrec">readsPrec</a> :: <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Int.html#t:Int">Int</a> -&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Text-ParserCombinators-ReadP.html#t:ReadS">ReadS</a> <a href="Network-Socket-Internal.html#t:PortNumber">PortNumber</a> <a href="#v:readsPrec" class="selflink">#</a></p><p class="src"><a href="#v:readList">readList</a> :: <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Text-ParserCombinators-ReadP.html#t:ReadS">ReadS</a> [<a href="Network-Socket-Internal.html#t:PortNumber">PortNumber</a>] <a href="#v:readList" class="selflink">#</a></p><p class="src"><a href="#v:readPrec">readPrec</a> :: <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Text-ParserCombinators-ReadPrec.html#t:ReadPrec">ReadPrec</a> <a href="Network-Socket-Internal.html#t:PortNumber">PortNumber</a> <a href="#v:readPrec" class="selflink">#</a></p><p class="src"><a href="#v:readListPrec">readListPrec</a> :: <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Text-ParserCombinators-ReadPrec.html#t:ReadPrec">ReadPrec</a> [<a href="Network-Socket-Internal.html#t:PortNumber">PortNumber</a>] <a href="#v:readListPrec" class="selflink">#</a></p></div></div></td></tr><tr><td class="src clearfix"><span class="inst-left"><span id="control.i:id:PortNumber:Real:7" class="instance expander" onclick="toggleSection('i:id:PortNumber:Real:7')"></span> <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Prelude.html#t:Real">Real</a> <a href="Network-Socket-Internal.html#t:PortNumber">PortNumber</a></span> <a href="src/Network-Socket-Types.html#line-780" class="link">Source</a> <a href="#t:PortNumber" class="selflink">#</a></td><td class="doc empty">&nbsp;</td></tr><tr><td colspan="2"><div id="section.i:id:PortNumber:Real:7" class="inst-details hide"><div class="subs methods"><p class="caption">Methods</p><p class="src"><a href="#v:toRational">toRational</a> :: <a href="Network-Socket-Internal.html#t:PortNumber">PortNumber</a> -&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Prelude.html#t:Rational">Rational</a> <a href="#v:toRational" class="selflink">#</a></p></div></div></td></tr><tr><td class="src clearfix"><span class="inst-left"><span id="control.i:id:PortNumber:Show:8" class="instance expander" onclick="toggleSection('i:id:PortNumber:Show:8')"></span> <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Text-Show.html#t:Show">Show</a> <a href="Network-Socket-Internal.html#t:PortNumber">PortNumber</a></span> <a href="src/Network-Socket-Types.html#line-749" class="link">Source</a> <a href="#t:PortNumber" class="selflink">#</a></td><td class="doc empty">&nbsp;</td></tr><tr><td colspan="2"><div id="section.i:id:PortNumber:Show:8" class="inst-details hide"><div class="subs methods"><p class="caption">Methods</p><p class="src"><a href="#v:showsPrec">showsPrec</a> :: <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Int.html#t:Int">Int</a> -&gt; <a href="Network-Socket-Internal.html#t:PortNumber">PortNumber</a> -&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Text-Show.html#t:ShowS">ShowS</a> <a href="#v:showsPrec" class="selflink">#</a></p><p class="src"><a href="#v:show">show</a> :: <a href="Network-Socket-Internal.html#t:PortNumber">PortNumber</a> -&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-String.html#t:String">String</a> <a href="#v:show" class="selflink">#</a></p><p class="src"><a href="#v:showList">showList</a> :: [<a href="Network-Socket-Internal.html#t:PortNumber">PortNumber</a>] -&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Text-Show.html#t:ShowS">ShowS</a> <a href="#v:showList" class="selflink">#</a></p></div></div></td></tr><tr><td class="src clearfix"><span class="inst-left"><span id="control.i:id:PortNumber:Storable:9" class="instance expander" onclick="toggleSection('i:id:PortNumber:Storable:9')"></span> <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Foreign-Storable.html#t:Storable">Storable</a> <a href="Network-Socket-Internal.html#t:PortNumber">PortNumber</a></span> <a href="src/Network-Socket-Types.html#line-788" class="link">Source</a> <a href="#t:PortNumber" class="selflink">#</a></td><td class="doc empty">&nbsp;</td></tr><tr><td colspan="2"><div id="section.i:id:PortNumber:Storable:9" class="inst-details hide"><div class="subs methods"><p class="caption">Methods</p><p class="src"><a href="#v:sizeOf">sizeOf</a> :: <a href="Network-Socket-Internal.html#t:PortNumber">PortNumber</a> -&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Int.html#t:Int">Int</a> <a href="#v:sizeOf" class="selflink">#</a></p><p class="src"><a href="#v:alignment">alignment</a> :: <a href="Network-Socket-Internal.html#t:PortNumber">PortNumber</a> -&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Int.html#t:Int">Int</a> <a href="#v:alignment" class="selflink">#</a></p><p class="src"><a href="#v:peekElemOff">peekElemOff</a> :: <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Foreign-Ptr.html#t:Ptr">Ptr</a> <a href="Network-Socket-Internal.html#t:PortNumber">PortNumber</a> -&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Int.html#t:Int">Int</a> -&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/System-IO.html#t:IO">IO</a> <a href="Network-Socket-Internal.html#t:PortNumber">PortNumber</a> <a href="#v:peekElemOff" class="selflink">#</a></p><p class="src"><a href="#v:pokeElemOff">pokeElemOff</a> :: <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Foreign-Ptr.html#t:Ptr">Ptr</a> <a href="Network-Socket-Internal.html#t:PortNumber">PortNumber</a> -&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Int.html#t:Int">Int</a> -&gt; <a href="Network-Socket-Internal.html#t:PortNumber">PortNumber</a> -&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/System-IO.html#t:IO">IO</a> () <a href="#v:pokeElemOff" class="selflink">#</a></p><p class="src"><a href="#v:peekByteOff">peekByteOff</a> :: <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Foreign-Ptr.html#t:Ptr">Ptr</a> b -&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Int.html#t:Int">Int</a> -&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/System-IO.html#t:IO">IO</a> <a href="Network-Socket-Internal.html#t:PortNumber">PortNumber</a> <a href="#v:peekByteOff" class="selflink">#</a></p><p class="src"><a href="#v:pokeByteOff">pokeByteOff</a> :: <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Foreign-Ptr.html#t:Ptr">Ptr</a> b -&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Int.html#t:Int">Int</a> -&gt; <a href="Network-Socket-Internal.html#t:PortNumber">PortNumber</a> -&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/System-IO.html#t:IO">IO</a> () <a href="#v:pokeByteOff" class="selflink">#</a></p><p class="src"><a href="#v:peek">peek</a> :: <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Foreign-Ptr.html#t:Ptr">Ptr</a> <a href="Network-Socket-Internal.html#t:PortNumber">PortNumber</a> -&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/System-IO.html#t:IO">IO</a> <a href="Network-Socket-Internal.html#t:PortNumber">PortNumber</a> <a href="#v:peek" class="selflink">#</a></p><p class="src"><a href="#v:poke">poke</a> :: <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Foreign-Ptr.html#t:Ptr">Ptr</a> <a href="Network-Socket-Internal.html#t:PortNumber">PortNumber</a> -&gt; <a href="Network-Socket-Internal.html#t:PortNumber">PortNumber</a> -&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/System-IO.html#t:IO">IO</a> () <a href="#v:poke" class="selflink">#</a></p></div></div></td></tr></table></div></div></div><div class="top"><p class="src"><span class="keyword">data</span> <a id="t:SockAddr" class="def">SockAddr</a> <a href="src/Network-Socket-Types.html#SockAddr" class="link">Source</a> <a href="#t:SockAddr" class="selflink">#</a></p><div class="doc"><p>The existence of a constructor does not necessarily imply that
 that socket address type is supported on your system: see
 <code><a href="Network-Socket.html#v:isSupportedSockAddr">isSupportedSockAddr</a></code>.</p></div><div class="subs constructors"><p class="caption">Constructors</p><table><tr><td class="src"><a id="v:SockAddrInet" class="def">SockAddrInet</a> <a href="Network-Socket-Internal.html#t:PortNumber">PortNumber</a> <a href="Network-Socket-Internal.html#t:HostAddress">HostAddress</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a id="v:SockAddrInet6" class="def">SockAddrInet6</a> <a href="Network-Socket-Internal.html#t:PortNumber">PortNumber</a> <a href="Network-Socket-Internal.html#t:FlowInfo">FlowInfo</a> <a href="Network-Socket-Internal.html#t:HostAddress6">HostAddress6</a> <a href="Network-Socket-Internal.html#t:ScopeID">ScopeID</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a id="v:SockAddrUnix" class="def">SockAddrUnix</a> <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-String.html#t:String">String</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a id="v:SockAddrCan" class="def">SockAddrCan</a> <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Int.html#t:Int32">Int32</a></td><td class="doc empty">&nbsp;</td></tr></table></div><div class="subs instances"><p id="control.i:SockAddr" class="caption collapser" onclick="toggleSection('i:SockAddr')">Instances</p><div id="section.i:SockAddr" class="show"><table><tr><td class="src clearfix"><span class="inst-left"><span id="control.i:id:SockAddr:Eq:1" class="instance expander" onclick="toggleSection('i:id:SockAddr:Eq:1')"></span> <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Eq.html#t:Eq">Eq</a> <a href="Network-Socket-Internal.html#t:SockAddr">SockAddr</a></span> <a href="src/Network-Socket-Types.html#line-836" class="link">Source</a> <a href="#t:SockAddr" class="selflink">#</a></td><td class="doc empty">&nbsp;</td></tr><tr><td colspan="2"><div id="section.i:id:SockAddr:Eq:1" class="inst-details hide"><div class="subs methods"><p class="caption">Methods</p><p class="src"><a href="#v:-61--61-">(==)</a> :: <a href="Network-Socket-Internal.html#t:SockAddr">SockAddr</a> -&gt; <a href="Network-Socket-Internal.html#t:SockAddr">SockAddr</a> -&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Bool.html#t:Bool">Bool</a> <a href="#v:-61--61-" class="selflink">#</a></p><p class="src"><a href="#v:-47--61-">(/=)</a> :: <a href="Network-Socket-Internal.html#t:SockAddr">SockAddr</a> -&gt; <a href="Network-Socket-Internal.html#t:SockAddr">SockAddr</a> -&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Bool.html#t:Bool">Bool</a> <a href="#v:-47--61-" class="selflink">#</a></p></div></div></td></tr><tr><td class="src clearfix"><span class="inst-left"><span id="control.i:id:SockAddr:Ord:2" class="instance expander" onclick="toggleSection('i:id:SockAddr:Ord:2')"></span> <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Ord.html#t:Ord">Ord</a> <a href="Network-Socket-Internal.html#t:SockAddr">SockAddr</a></span> <a href="src/Network-Socket-Types.html#line-836" class="link">Source</a> <a href="#t:SockAddr" class="selflink">#</a></td><td class="doc empty">&nbsp;</td></tr><tr><td colspan="2"><div id="section.i:id:SockAddr:Ord:2" class="inst-details hide"><div class="subs methods"><p class="caption">Methods</p><p class="src"><a href="#v:compare">compare</a> :: <a href="Network-Socket-Internal.html#t:SockAddr">SockAddr</a> -&gt; <a href="Network-Socket-Internal.html#t:SockAddr">SockAddr</a> -&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Ord.html#t:Ordering">Ordering</a> <a href="#v:compare" class="selflink">#</a></p><p class="src"><a href="#v:-60-">(&lt;)</a> :: <a href="Network-Socket-Internal.html#t:SockAddr">SockAddr</a> -&gt; <a href="Network-Socket-Internal.html#t:SockAddr">SockAddr</a> -&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Bool.html#t:Bool">Bool</a> <a href="#v:-60-" class="selflink">#</a></p><p class="src"><a href="#v:-60--61-">(&lt;=)</a> :: <a href="Network-Socket-Internal.html#t:SockAddr">SockAddr</a> -&gt; <a href="Network-Socket-Internal.html#t:SockAddr">SockAddr</a> -&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Bool.html#t:Bool">Bool</a> <a href="#v:-60--61-" class="selflink">#</a></p><p class="src"><a href="#v:-62-">(&gt;)</a> :: <a href="Network-Socket-Internal.html#t:SockAddr">SockAddr</a> -&gt; <a href="Network-Socket-Internal.html#t:SockAddr">SockAddr</a> -&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Bool.html#t:Bool">Bool</a> <a href="#v:-62-" class="selflink">#</a></p><p class="src"><a href="#v:-62--61-">(&gt;=)</a> :: <a href="Network-Socket-Internal.html#t:SockAddr">SockAddr</a> -&gt; <a href="Network-Socket-Internal.html#t:SockAddr">SockAddr</a> -&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Bool.html#t:Bool">Bool</a> <a href="#v:-62--61-" class="selflink">#</a></p><p class="src"><a href="#v:max">max</a> :: <a href="Network-Socket-Internal.html#t:SockAddr">SockAddr</a> -&gt; <a href="Network-Socket-Internal.html#t:SockAddr">SockAddr</a> -&gt; <a href="Network-Socket-Internal.html#t:SockAddr">SockAddr</a> <a href="#v:max" class="selflink">#</a></p><p class="src"><a href="#v:min">min</a> :: <a href="Network-Socket-Internal.html#t:SockAddr">SockAddr</a> -&gt; <a href="Network-Socket-Internal.html#t:SockAddr">SockAddr</a> -&gt; <a href="Network-Socket-Internal.html#t:SockAddr">SockAddr</a> <a href="#v:min" class="selflink">#</a></p></div></div></td></tr></table></div></div></div><div class="top"><p class="src"><a id="v:peekSockAddr" class="def">peekSockAddr</a> :: <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Foreign-Ptr.html#t:Ptr">Ptr</a> <a href="Network-Socket-Internal.html#t:SockAddr">SockAddr</a> -&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/System-IO.html#t:IO">IO</a> <a href="Network-Socket-Internal.html#t:SockAddr">SockAddr</a> <a href="src/Network-Socket-Types.html#peekSockAddr" class="link">Source</a> <a href="#v:peekSockAddr" class="selflink">#</a></p><div class="doc"><p>Read a <code><a href="Network-Socket-Internal.html#t:SockAddr">SockAddr</a></code> from the given memory location.</p></div></div><div class="top"><p class="src"><a id="v:pokeSockAddr" class="def">pokeSockAddr</a> :: <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Foreign-Ptr.html#t:Ptr">Ptr</a> a -&gt; <a href="Network-Socket-Internal.html#t:SockAddr">SockAddr</a> -&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/System-IO.html#t:IO">IO</a> () <a href="src/Network-Socket-Types.html#pokeSockAddr" class="link">Source</a> <a href="#v:pokeSockAddr" class="selflink">#</a></p><div class="doc"><p>Write the given <code><a href="Network-Socket-Internal.html#t:SockAddr">SockAddr</a></code> to the given memory location.</p></div></div><div class="top"><p class="src"><a id="v:sizeOfSockAddr" class="def">sizeOfSockAddr</a> :: <a href="Network-Socket-Internal.html#t:SockAddr">SockAddr</a> -&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Int.html#t:Int">Int</a> <a href="src/Network-Socket-Types.html#sizeOfSockAddr" class="link">Source</a> <a href="#v:sizeOfSockAddr" class="selflink">#</a></p><div class="doc"><p>Computes the storage requirements (in bytes) of the given
 <code><a href="Network-Socket-Internal.html#t:SockAddr">SockAddr</a></code>.  This function differs from <code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Foreign-Storable.html#v:sizeOf">sizeOf</a></code>
 in that the value of the argument <em>is</em> used.</p></div></div><div class="top"><p class="src"><a id="v:sizeOfSockAddrByFamily" class="def">sizeOfSockAddrByFamily</a> :: <a href="Network-Socket-Internal.html#t:Family">Family</a> -&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Int.html#t:Int">Int</a> <a href="src/Network-Socket-Types.html#sizeOfSockAddrByFamily" class="link">Source</a> <a href="#v:sizeOfSockAddrByFamily" class="selflink">#</a></p><div class="doc"><p>Computes the storage requirements (in bytes) required for a
 <code><a href="Network-Socket-Internal.html#t:SockAddr">SockAddr</a></code> with the given <code><a href="Network-Socket-Internal.html#t:Family">Family</a></code>.</p></div></div><div class="top"><p class="src"><a id="v:withSockAddr" class="def">withSockAddr</a> :: <a href="Network-Socket-Internal.html#t:SockAddr">SockAddr</a> -&gt; (<a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Foreign-Ptr.html#t:Ptr">Ptr</a> <a href="Network-Socket-Internal.html#t:SockAddr">SockAddr</a> -&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Int.html#t:Int">Int</a> -&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/System-IO.html#t:IO">IO</a> a) -&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/System-IO.html#t:IO">IO</a> a <a href="src/Network-Socket-Types.html#withSockAddr" class="link">Source</a> <a href="#v:withSockAddr" class="selflink">#</a></p><div class="doc"><p>Use a <code><a href="Network-Socket-Internal.html#t:SockAddr">SockAddr</a></code> with a function requiring a pointer to a
 <code><a href="Network-Socket-Internal.html#t:SockAddr">SockAddr</a></code> and the length of that <code><a href="Network-Socket-Internal.html#t:SockAddr">SockAddr</a></code>.</p></div></div><div class="top"><p class="src"><a id="v:withNewSockAddr" class="def">withNewSockAddr</a> :: <a href="Network-Socket-Internal.html#t:Family">Family</a> -&gt; (<a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Foreign-Ptr.html#t:Ptr">Ptr</a> <a href="Network-Socket-Internal.html#t:SockAddr">SockAddr</a> -&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Int.html#t:Int">Int</a> -&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/System-IO.html#t:IO">IO</a> a) -&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/System-IO.html#t:IO">IO</a> a <a href="src/Network-Socket-Types.html#withNewSockAddr" class="link">Source</a> <a href="#v:withNewSockAddr" class="selflink">#</a></p><div class="doc"><p>Create a new <code><a href="Network-Socket-Internal.html#t:SockAddr">SockAddr</a></code> for use with a function requiring a
 pointer to a <code><a href="Network-Socket-Internal.html#t:SockAddr">SockAddr</a></code> and the length of that <code><a href="Network-Socket-Internal.html#t:SockAddr">SockAddr</a></code>.</p></div></div><h1 id="g:2">Protocol families</h1><div class="top"><p class="src"><span class="keyword">data</span> <a id="t:Family" class="def">Family</a> <a href="src/Network-Socket-Types.html#Family" class="link">Source</a> <a href="#t:Family" class="selflink">#</a></p><div class="doc"><p>Address families.</p><p>A constructor being present here does not mean it is supported by the
 operating system: see <code><a href="Network-Socket.html#v:isSupportedFamily">isSupportedFamily</a></code>.</p></div><div class="subs constructors"><p class="caption">Constructors</p><table><tr><td class="src"><a id="v:AF_UNSPEC" class="def">AF_UNSPEC</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a id="v:AF_UNIX" class="def">AF_UNIX</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a id="v:AF_INET" class="def">AF_INET</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a id="v:AF_INET6" class="def">AF_INET6</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a id="v:AF_IMPLINK" class="def">AF_IMPLINK</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a id="v:AF_PUP" class="def">AF_PUP</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a id="v:AF_CHAOS" class="def">AF_CHAOS</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a id="v:AF_NS" class="def">AF_NS</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a id="v:AF_NBS" class="def">AF_NBS</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a id="v:AF_ECMA" class="def">AF_ECMA</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a id="v:AF_DATAKIT" class="def">AF_DATAKIT</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a id="v:AF_CCITT" class="def">AF_CCITT</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a id="v:AF_SNA" class="def">AF_SNA</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a id="v:AF_DECnet" class="def">AF_DECnet</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a id="v:AF_DLI" class="def">AF_DLI</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a id="v:AF_LAT" class="def">AF_LAT</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a id="v:AF_HYLINK" class="def">AF_HYLINK</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a id="v:AF_APPLETALK" class="def">AF_APPLETALK</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a id="v:AF_ROUTE" class="def">AF_ROUTE</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a id="v:AF_NETBIOS" class="def">AF_NETBIOS</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a id="v:AF_NIT" class="def">AF_NIT</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a id="v:AF_802" class="def">AF_802</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a id="v:AF_ISO" class="def">AF_ISO</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a id="v:AF_OSI" class="def">AF_OSI</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a id="v:AF_NETMAN" class="def">AF_NETMAN</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a id="v:AF_X25" class="def">AF_X25</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a id="v:AF_AX25" class="def">AF_AX25</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a id="v:AF_OSINET" class="def">AF_OSINET</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a id="v:AF_GOSSIP" class="def">AF_GOSSIP</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a id="v:AF_IPX" class="def">AF_IPX</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a id="v:Pseudo_AF_XTP" class="def">Pseudo_AF_XTP</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a id="v:AF_CTF" class="def">AF_CTF</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a id="v:AF_WAN" class="def">AF_WAN</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a id="v:AF_SDL" class="def">AF_SDL</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a id="v:AF_NETWARE" class="def">AF_NETWARE</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a id="v:AF_NDD" class="def">AF_NDD</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a id="v:AF_INTF" class="def">AF_INTF</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a id="v:AF_COIP" class="def">AF_COIP</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a id="v:AF_CNT" class="def">AF_CNT</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a id="v:Pseudo_AF_RTIP" class="def">Pseudo_AF_RTIP</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a id="v:Pseudo_AF_PIP" class="def">Pseudo_AF_PIP</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a id="v:AF_SIP" class="def">AF_SIP</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a id="v:AF_ISDN" class="def">AF_ISDN</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a id="v:Pseudo_AF_KEY" class="def">Pseudo_AF_KEY</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a id="v:AF_NATM" class="def">AF_NATM</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a id="v:AF_ARP" class="def">AF_ARP</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a id="v:Pseudo_AF_HDRCMPLT" class="def">Pseudo_AF_HDRCMPLT</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a id="v:AF_ENCAP" class="def">AF_ENCAP</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a id="v:AF_LINK" class="def">AF_LINK</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a id="v:AF_RAW" class="def">AF_RAW</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a id="v:AF_RIF" class="def">AF_RIF</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a id="v:AF_NETROM" class="def">AF_NETROM</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a id="v:AF_BRIDGE" class="def">AF_BRIDGE</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a id="v:AF_ATMPVC" class="def">AF_ATMPVC</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a id="v:AF_ROSE" class="def">AF_ROSE</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a id="v:AF_NETBEUI" class="def">AF_NETBEUI</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a id="v:AF_SECURITY" class="def">AF_SECURITY</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a id="v:AF_PACKET" class="def">AF_PACKET</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a id="v:AF_ASH" class="def">AF_ASH</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a id="v:AF_ECONET" class="def">AF_ECONET</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a id="v:AF_ATMSVC" class="def">AF_ATMSVC</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a id="v:AF_IRDA" class="def">AF_IRDA</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a id="v:AF_PPPOX" class="def">AF_PPPOX</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a id="v:AF_WANPIPE" class="def">AF_WANPIPE</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a id="v:AF_BLUETOOTH" class="def">AF_BLUETOOTH</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a id="v:AF_CAN" class="def">AF_CAN</a></td><td class="doc empty">&nbsp;</td></tr></table></div><div class="subs instances"><p id="control.i:Family" class="caption collapser" onclick="toggleSection('i:Family')">Instances</p><div id="section.i:Family" class="show"><table><tr><td class="src clearfix"><span class="inst-left"><span id="control.i:id:Family:Eq:1" class="instance expander" onclick="toggleSection('i:id:Family:Eq:1')"></span> <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Eq.html#t:Eq">Eq</a> <a href="Network-Socket-Internal.html#t:Family">Family</a></span> <a href="src/Network-Socket-Types.html#line-309" class="link">Source</a> <a href="#t:Family" class="selflink">#</a></td><td class="doc empty">&nbsp;</td></tr><tr><td colspan="2"><div id="section.i:id:Family:Eq:1" class="inst-details hide"><div class="subs methods"><p class="caption">Methods</p><p class="src"><a href="#v:-61--61-">(==)</a> :: <a href="Network-Socket-Internal.html#t:Family">Family</a> -&gt; <a href="Network-Socket-Internal.html#t:Family">Family</a> -&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Bool.html#t:Bool">Bool</a> <a href="#v:-61--61-" class="selflink">#</a></p><p class="src"><a href="#v:-47--61-">(/=)</a> :: <a href="Network-Socket-Internal.html#t:Family">Family</a> -&gt; <a href="Network-Socket-Internal.html#t:Family">Family</a> -&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Bool.html#t:Bool">Bool</a> <a href="#v:-47--61-" class="selflink">#</a></p></div></div></td></tr><tr><td class="src clearfix"><span class="inst-left"><span id="control.i:id:Family:Ord:2" class="instance expander" onclick="toggleSection('i:id:Family:Ord:2')"></span> <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Ord.html#t:Ord">Ord</a> <a href="Network-Socket-Internal.html#t:Family">Family</a></span> <a href="src/Network-Socket-Types.html#line-309" class="link">Source</a> <a href="#t:Family" class="selflink">#</a></td><td class="doc empty">&nbsp;</td></tr><tr><td colspan="2"><div id="section.i:id:Family:Ord:2" class="inst-details hide"><div class="subs methods"><p class="caption">Methods</p><p class="src"><a href="#v:compare">compare</a> :: <a href="Network-Socket-Internal.html#t:Family">Family</a> -&gt; <a href="Network-Socket-Internal.html#t:Family">Family</a> -&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Ord.html#t:Ordering">Ordering</a> <a href="#v:compare" class="selflink">#</a></p><p class="src"><a href="#v:-60-">(&lt;)</a> :: <a href="Network-Socket-Internal.html#t:Family">Family</a> -&gt; <a href="Network-Socket-Internal.html#t:Family">Family</a> -&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Bool.html#t:Bool">Bool</a> <a href="#v:-60-" class="selflink">#</a></p><p class="src"><a href="#v:-60--61-">(&lt;=)</a> :: <a href="Network-Socket-Internal.html#t:Family">Family</a> -&gt; <a href="Network-Socket-Internal.html#t:Family">Family</a> -&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Bool.html#t:Bool">Bool</a> <a href="#v:-60--61-" class="selflink">#</a></p><p class="src"><a href="#v:-62-">(&gt;)</a> :: <a href="Network-Socket-Internal.html#t:Family">Family</a> -&gt; <a href="Network-Socket-Internal.html#t:Family">Family</a> -&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Bool.html#t:Bool">Bool</a> <a href="#v:-62-" class="selflink">#</a></p><p class="src"><a href="#v:-62--61-">(&gt;=)</a> :: <a href="Network-Socket-Internal.html#t:Family">Family</a> -&gt; <a href="Network-Socket-Internal.html#t:Family">Family</a> -&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Bool.html#t:Bool">Bool</a> <a href="#v:-62--61-" class="selflink">#</a></p><p class="src"><a href="#v:max">max</a> :: <a href="Network-Socket-Internal.html#t:Family">Family</a> -&gt; <a href="Network-Socket-Internal.html#t:Family">Family</a> -&gt; <a href="Network-Socket-Internal.html#t:Family">Family</a> <a href="#v:max" class="selflink">#</a></p><p class="src"><a href="#v:min">min</a> :: <a href="Network-Socket-Internal.html#t:Family">Family</a> -&gt; <a href="Network-Socket-Internal.html#t:Family">Family</a> -&gt; <a href="Network-Socket-Internal.html#t:Family">Family</a> <a href="#v:min" class="selflink">#</a></p></div></div></td></tr><tr><td class="src clearfix"><span class="inst-left"><span id="control.i:id:Family:Read:3" class="instance expander" onclick="toggleSection('i:id:Family:Read:3')"></span> <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Text-Read.html#t:Read">Read</a> <a href="Network-Socket-Internal.html#t:Family">Family</a></span> <a href="src/Network-Socket-Types.html#line-309" class="link">Source</a> <a href="#t:Family" class="selflink">#</a></td><td class="doc empty">&nbsp;</td></tr><tr><td colspan="2"><div id="section.i:id:Family:Read:3" class="inst-details hide"><div class="subs methods"><p class="caption">Methods</p><p class="src"><a href="#v:readsPrec">readsPrec</a> :: <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Int.html#t:Int">Int</a> -&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Text-ParserCombinators-ReadP.html#t:ReadS">ReadS</a> <a href="Network-Socket-Internal.html#t:Family">Family</a> <a href="#v:readsPrec" class="selflink">#</a></p><p class="src"><a href="#v:readList">readList</a> :: <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Text-ParserCombinators-ReadP.html#t:ReadS">ReadS</a> [<a href="Network-Socket-Internal.html#t:Family">Family</a>] <a href="#v:readList" class="selflink">#</a></p><p class="src"><a href="#v:readPrec">readPrec</a> :: <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Text-ParserCombinators-ReadPrec.html#t:ReadPrec">ReadPrec</a> <a href="Network-Socket-Internal.html#t:Family">Family</a> <a href="#v:readPrec" class="selflink">#</a></p><p class="src"><a href="#v:readListPrec">readListPrec</a> :: <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Text-ParserCombinators-ReadPrec.html#t:ReadPrec">ReadPrec</a> [<a href="Network-Socket-Internal.html#t:Family">Family</a>] <a href="#v:readListPrec" class="selflink">#</a></p></div></div></td></tr><tr><td class="src clearfix"><span class="inst-left"><span id="control.i:id:Family:Show:4" class="instance expander" onclick="toggleSection('i:id:Family:Show:4')"></span> <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Text-Show.html#t:Show">Show</a> <a href="Network-Socket-Internal.html#t:Family">Family</a></span> <a href="src/Network-Socket-Types.html#line-309" class="link">Source</a> <a href="#t:Family" class="selflink">#</a></td><td class="doc empty">&nbsp;</td></tr><tr><td colspan="2"><div id="section.i:id:Family:Show:4" class="inst-details hide"><div class="subs methods"><p class="caption">Methods</p><p class="src"><a href="#v:showsPrec">showsPrec</a> :: <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Int.html#t:Int">Int</a> -&gt; <a href="Network-Socket-Internal.html#t:Family">Family</a> -&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Text-Show.html#t:ShowS">ShowS</a> <a href="#v:showsPrec" class="selflink">#</a></p><p class="src"><a href="#v:show">show</a> :: <a href="Network-Socket-Internal.html#t:Family">Family</a> -&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-String.html#t:String">String</a> <a href="#v:show" class="selflink">#</a></p><p class="src"><a href="#v:showList">showList</a> :: [<a href="Network-Socket-Internal.html#t:Family">Family</a>] -&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Text-Show.html#t:ShowS">ShowS</a> <a href="#v:showList" class="selflink">#</a></p></div></div></td></tr></table></div></div></div><h1 id="g:3">Socket error functions</h1><div class="top"><p class="src"><a id="v:throwSocketError" class="def">throwSocketError</a> <a href="src/Network-Socket-Internal.html#throwSocketError" class="link">Source</a> <a href="#v:throwSocketError" class="selflink">#</a></p><div class="subs arguments"><p class="caption">Arguments</p><table><tr><td class="src">:: <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-String.html#t:String">String</a></td><td class="doc"><p>textual description of the error location</p></td></tr><tr><td class="src">-&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/System-IO.html#t:IO">IO</a> a</td><td class="doc empty">&nbsp;</td></tr></table></div><div class="doc"><p>Throw an <code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/System-IO-Error.html#t:IOError">IOError</a></code> corresponding to the current socket error.</p></div></div><div class="top"><p class="src"><a id="v:throwSocketErrorCode" class="def">throwSocketErrorCode</a> :: <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-String.html#t:String">String</a> -&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Foreign-C-Types.html#t:CInt">CInt</a> -&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/System-IO.html#t:IO">IO</a> a <a href="src/Network-Socket-Internal.html#throwSocketErrorCode" class="link">Source</a> <a href="#v:throwSocketErrorCode" class="selflink">#</a></p><div class="doc"><p>Like <code><a href="Network-Socket-Internal.html#v:throwSocketError">throwSocketError</a></code>, but the error code is supplied as an argument.</p><p>On Windows, do not use errno.  Use a system error code instead.</p></div></div><h1 id="g:4">Guards for socket operations that may fail</h1><div class="top"><p class="src"><a id="v:throwSocketErrorIfMinus1_" class="def">throwSocketErrorIfMinus1_</a> <a href="src/Network-Socket-Internal.html#throwSocketErrorIfMinus1_" class="link">Source</a> <a href="#v:throwSocketErrorIfMinus1_" class="selflink">#</a></p><div class="subs arguments"><p class="caption">Arguments</p><table><tr><td class="src">:: (<a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Eq.html#t:Eq">Eq</a> a, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Prelude.html#t:Num">Num</a> a)</td><td class="doc empty">&nbsp;</td></tr><tr><td class="src">=&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-String.html#t:String">String</a></td><td class="doc"><p>textual description of the location</p></td></tr><tr><td class="src">-&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/System-IO.html#t:IO">IO</a> a</td><td class="doc"><p>the <code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/System-IO.html#t:IO">IO</a></code> operation to be executed</p></td></tr><tr><td class="src">-&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/System-IO.html#t:IO">IO</a> ()</td><td class="doc empty">&nbsp;</td></tr></table></div><div class="doc"><p>Throw an <code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/System-IO-Error.html#t:IOError">IOError</a></code> corresponding to the current socket error if
 the IO action returns a result of <code>-1</code>.  Discards the result of the
 IO action after error handling.</p></div></div><div class="top"><p class="src"><a id="v:throwSocketErrorIfMinus1Retry" class="def">throwSocketErrorIfMinus1Retry</a> <a href="src/Network-Socket-Internal.html#throwSocketErrorIfMinus1Retry" class="link">Source</a> <a href="#v:throwSocketErrorIfMinus1Retry" class="selflink">#</a></p><div class="subs arguments"><p class="caption">Arguments</p><table><tr><td class="src">:: (<a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Eq.html#t:Eq">Eq</a> a, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Prelude.html#t:Num">Num</a> a)</td><td class="doc empty">&nbsp;</td></tr><tr><td class="src">=&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-String.html#t:String">String</a></td><td class="doc"><p>textual description of the location</p></td></tr><tr><td class="src">-&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/System-IO.html#t:IO">IO</a> a</td><td class="doc"><p>the <code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/System-IO.html#t:IO">IO</a></code> operation to be executed</p></td></tr><tr><td class="src">-&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/System-IO.html#t:IO">IO</a> a</td><td class="doc empty">&nbsp;</td></tr></table></div><div class="doc"><p>Throw an <code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/System-IO-Error.html#t:IOError">IOError</a></code> corresponding to the current socket error if
 the IO action returns a result of <code>-1</code>, but retries in case of an
 interrupted operation.</p></div></div><div class="top"><p class="src"><a id="v:throwSocketErrorIfMinus1Retry_" class="def">throwSocketErrorIfMinus1Retry_</a> <a href="src/Network-Socket-Internal.html#throwSocketErrorIfMinus1Retry_" class="link">Source</a> <a href="#v:throwSocketErrorIfMinus1Retry_" class="selflink">#</a></p><div class="subs arguments"><p class="caption">Arguments</p><table><tr><td class="src">:: (<a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Eq.html#t:Eq">Eq</a> a, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Prelude.html#t:Num">Num</a> a)</td><td class="doc empty">&nbsp;</td></tr><tr><td class="src">=&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-String.html#t:String">String</a></td><td class="doc"><p>textual description of the location</p></td></tr><tr><td class="src">-&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/System-IO.html#t:IO">IO</a> a</td><td class="doc"><p>the <code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/System-IO.html#t:IO">IO</a></code> operation to be executed</p></td></tr><tr><td class="src">-&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/System-IO.html#t:IO">IO</a> ()</td><td class="doc empty">&nbsp;</td></tr></table></div><div class="doc"><p>Throw an <code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/System-IO-Error.html#t:IOError">IOError</a></code> corresponding to the current socket error if
 the IO action returns a result of <code>-1</code>, but retries in case of an
 interrupted operation. Discards the result of the IO action after
 error handling.</p></div></div><div class="top"><p class="src"><a id="v:throwSocketErrorIfMinus1RetryMayBlock" class="def">throwSocketErrorIfMinus1RetryMayBlock</a> <a href="src/Network-Socket-Internal.html#throwSocketErrorIfMinus1RetryMayBlock" class="link">Source</a> <a href="#v:throwSocketErrorIfMinus1RetryMayBlock" class="selflink">#</a></p><div class="subs arguments"><p class="caption">Arguments</p><table><tr><td class="src">:: (<a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Eq.html#t:Eq">Eq</a> a, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Prelude.html#t:Num">Num</a> a)</td><td class="doc empty">&nbsp;</td></tr><tr><td class="src">=&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-String.html#t:String">String</a></td><td class="doc"><p>textual description of the location</p></td></tr><tr><td class="src">-&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/System-IO.html#t:IO">IO</a> b</td><td class="doc"><p>action to execute before retrying if an
   immediate retry would block</p></td></tr><tr><td class="src">-&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/System-IO.html#t:IO">IO</a> a</td><td class="doc"><p>the <code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/System-IO.html#t:IO">IO</a></code> operation to be executed</p></td></tr><tr><td class="src">-&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/System-IO.html#t:IO">IO</a> a</td><td class="doc empty">&nbsp;</td></tr></table></div><div class="doc"><p>Throw an <code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/System-IO-Error.html#t:IOError">IOError</a></code> corresponding to the current socket error if
 the IO action returns a result of <code>-1</code>, but retries in case of an
 interrupted operation.  Checks for operations that would block and
 executes an alternative action before retrying in that case.</p></div></div><h2 id="g:5">Guards that wait and retry if the operation would block</h2><div class="doc"><p>These guards are based on <code><a href="Network-Socket-Internal.html#v:throwSocketErrorIfMinus1RetryMayBlock">throwSocketErrorIfMinus1RetryMayBlock</a></code>.
 They wait for socket readiness if the action fails with <code>EWOULDBLOCK</code>
 or similar.</p></div><div class="top"><p class="src"><a id="v:throwSocketErrorWaitRead" class="def">throwSocketErrorWaitRead</a> :: (<a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Eq.html#t:Eq">Eq</a> a, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Prelude.html#t:Num">Num</a> a) =&gt; <a href="Network-Socket.html#t:Socket">Socket</a> -&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-String.html#t:String">String</a> -&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/System-IO.html#t:IO">IO</a> a -&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/System-IO.html#t:IO">IO</a> a <a href="src/Network-Socket-Internal.html#throwSocketErrorWaitRead" class="link">Source</a> <a href="#v:throwSocketErrorWaitRead" class="selflink">#</a></p><div class="doc"><p>Like <code><a href="Network-Socket-Internal.html#v:throwSocketErrorIfMinus1Retry">throwSocketErrorIfMinus1Retry</a></code>, but if the action fails with
 <code>EWOULDBLOCK</code> or similar, wait for the socket to be read-ready,
 and try again.</p></div></div><div class="top"><p class="src"><a id="v:throwSocketErrorWaitWrite" class="def">throwSocketErrorWaitWrite</a> :: (<a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Eq.html#t:Eq">Eq</a> a, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Prelude.html#t:Num">Num</a> a) =&gt; <a href="Network-Socket.html#t:Socket">Socket</a> -&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-String.html#t:String">String</a> -&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/System-IO.html#t:IO">IO</a> a -&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/System-IO.html#t:IO">IO</a> a <a href="src/Network-Socket-Internal.html#throwSocketErrorWaitWrite" class="link">Source</a> <a href="#v:throwSocketErrorWaitWrite" class="selflink">#</a></p><div class="doc"><p>Like <code><a href="Network-Socket-Internal.html#v:throwSocketErrorIfMinus1Retry">throwSocketErrorIfMinus1Retry</a></code>, but if the action fails with
 <code>EWOULDBLOCK</code> or similar, wait for the socket to be write-ready,
 and try again.</p></div></div><h1 id="g:6">Initialization</h1><div class="top"><p class="src"><a id="v:withSocketsDo" class="def">withSocketsDo</a> :: <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/System-IO.html#t:IO">IO</a> a -&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/System-IO.html#t:IO">IO</a> a <a href="src/Network-Socket-Internal.html#withSocketsDo" class="link">Source</a> <a href="#v:withSocketsDo" class="selflink">#</a></p><div class="doc"><p>With older versions of the <code>network</code> library on Windows operating systems,
the networking subsystem must be initialised using <code><a href="Network-Socket-Internal.html#v:withSocketsDo">withSocketsDo</a></code> before
any networking operations can be used. eg.</p><pre>main = withSocketsDo $ do {...}</pre><p>It is fine to nest calls to <code><a href="Network-Socket-Internal.html#v:withSocketsDo">withSocketsDo</a></code>, and to perform networking operations
after <code><a href="Network-Socket-Internal.html#v:withSocketsDo">withSocketsDo</a></code> has returned.</p><p>In newer versions of the <code>network</code> library it is only necessary to call
<code><a href="Network-Socket-Internal.html#v:withSocketsDo">withSocketsDo</a></code> if you are calling the <code><a href="Network-Socket.html#v:MkSocket">MkSocket</a></code> constructor directly.
However, for compatibility with older versions on Windows, it is good practice
to always call <code><a href="Network-Socket-Internal.html#v:withSocketsDo">withSocketsDo</a></code> (it's very cheap).</p></div></div><h1 id="g:7">Low-level helpers</h1><div class="top"><p class="src"><a id="v:zeroMemory" class="def">zeroMemory</a> :: <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Foreign-Ptr.html#t:Ptr">Ptr</a> a -&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Foreign-C-Types.html#t:CSize">CSize</a> -&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/System-IO.html#t:IO">IO</a> () <a href="src/Network-Socket-Types.html#zeroMemory" class="link">Source</a> <a href="#v:zeroMemory" class="selflink">#</a></p><div class="doc"><p>Zero a structure.</p></div></div></div></div><div id="footer"><p>Produced by <a href="http://www.haskell.org/haddock/">Haddock</a> version 2.17.2</p></div></body></html>