This file is indexed.

/usr/share/doc/libghc-network-doc/html/Network-Socket.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
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
<!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</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.html");};
//]]>
</script></head><body><div id="package-header"><ul class="links" id="page-menu"><li><a href="src/Network-Socket.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</p></div><div id="table-of-contents"><p class="caption">Contents</p><ul><li><a href="#g:1">Types</a></li><li><a href="#g:2">Address operations</a></li><li><a href="#g:3">Socket operations</a><ul><li><a href="#g:4">Sending and receiving data</a><ul><li><a href="#g:5">Sending and receiving with String</a></li><li><a href="#g:6">Sending and receiving with a buffer</a></li></ul></li><li><a href="#g:7">Misc</a></li><li><a href="#g:8">Predicates on sockets</a></li></ul></li><li><a href="#g:9">Socket options</a></li><li><a href="#g:10">File descriptor transmission</a></li><li><a href="#g:11">Special constants</a></li><li><a href="#g:12">Initialisation</a></li><li><a href="#g:13">Very low level operations</a></li><li><a href="#g:14">Deprecated aliases</a></li><li><a href="#g:15">Internal</a></li><li><a href="#section.orphans">Orphan instances</a></li></ul></div><div id="description"><p class="caption">Description</p><div class="doc"><p>The <a href="Network-Socket.html">Network.Socket</a> module is for when you want full control over
 sockets.  Essentially the entire C socket API is exposed through
 this module; in general the operations follow the behaviour of the C
 functions of the same name (consult your favourite Unix networking book).</p><p>A higher level interface to networking operations is provided
 through the module <a href="Network.html">Network</a>.</p></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">data</span> <a href="#t:Socket">Socket</a> = <a href="#v:MkSocket">MkSocket</a> <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Foreign-C-Types.html#t:CInt">CInt</a> <a href="Network-Socket.html#t:Family">Family</a> <a href="Network-Socket.html#t:SocketType">SocketType</a> <a href="Network-Socket.html#t:ProtocolNumber">ProtocolNumber</a> (<a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Control-Concurrent-MVar.html#t:MVar">MVar</a> <a href="Network-Socket.html#t:SocketStatus">SocketStatus</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:isSupportedFamily">isSupportedFamily</a> :: <a href="Network-Socket.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></li><li class="src short"><span class="keyword">data</span> <a href="#t:SocketType">SocketType</a><ul class="subs"><li>= <a href="#v:NoSocketType">NoSocketType</a></li><li>| <a href="#v:Stream">Stream</a></li><li>| <a href="#v:Datagram">Datagram</a></li><li>| <a href="#v:Raw">Raw</a></li><li>| <a href="#v:RDM">RDM</a></li><li>| <a href="#v:SeqPacket">SeqPacket</a></li></ul></li><li class="src short"><a href="#v:isSupportedSocketType">isSupportedSocketType</a> :: <a href="Network-Socket.html#t:SocketType">SocketType</a> -&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Bool.html#t:Bool">Bool</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.html#t:PortNumber">PortNumber</a> <a href="Network-Socket.html#t:HostAddress">HostAddress</a></li><li>| <a href="#v:SockAddrInet6">SockAddrInet6</a> <a href="Network-Socket.html#t:PortNumber">PortNumber</a> <a href="Network-Socket.html#t:FlowInfo">FlowInfo</a> <a href="Network-Socket.html#t:HostAddress6">HostAddress6</a> <a href="Network-Socket.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:isSupportedSockAddr">isSupportedSockAddr</a> :: <a href="Network-Socket.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></li><li class="src short"><span class="keyword">data</span> <a href="#t:SocketStatus">SocketStatus</a><ul class="subs"><li>= <a href="#v:NotConnected">NotConnected</a></li><li>| <a href="#v:Bound">Bound</a></li><li>| <a href="#v:Listening">Listening</a></li><li>| <a href="#v:Connected">Connected</a></li><li>| <a href="#v:ConvertedToHandle">ConvertedToHandle</a></li><li>| <a href="#v:Closed">Closed</a></li></ul></li><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"><a href="#v:hostAddressToTuple">hostAddressToTuple</a> :: <a href="Network-Socket.html#t:HostAddress">HostAddress</a> -&gt; (<a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Word.html#t:Word8">Word8</a>, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Word.html#t:Word8">Word8</a>, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Word.html#t:Word8">Word8</a>, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Word.html#t:Word8">Word8</a>)</li><li class="src short"><a href="#v:tupleToHostAddress">tupleToHostAddress</a> :: (<a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Word.html#t:Word8">Word8</a>, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Word.html#t:Word8">Word8</a>, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Word.html#t:Word8">Word8</a>, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Word.html#t:Word8">Word8</a>) -&gt; <a href="Network-Socket.html#t:HostAddress">HostAddress</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"><a href="#v:hostAddress6ToTuple">hostAddress6ToTuple</a> :: <a href="Network-Socket.html#t:HostAddress6">HostAddress6</a> -&gt; (<a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Word.html#t:Word16">Word16</a>, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Word.html#t:Word16">Word16</a>, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Word.html#t:Word16">Word16</a>, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Word.html#t:Word16">Word16</a>, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Word.html#t:Word16">Word16</a>, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Word.html#t:Word16">Word16</a>, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Word.html#t:Word16">Word16</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"><a href="#v:tupleToHostAddress6">tupleToHostAddress6</a> :: (<a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Word.html#t:Word16">Word16</a>, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Word.html#t:Word16">Word16</a>, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Word.html#t:Word16">Word16</a>, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Word.html#t:Word16">Word16</a>, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Word.html#t:Word16">Word16</a>, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Word.html#t:Word16">Word16</a>, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Word.html#t:Word16">Word16</a>, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Word.html#t:Word16">Word16</a>) -&gt; <a href="Network-Socket.html#t:HostAddress6">HostAddress6</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"><a href="#v:htonl">htonl</a> :: <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Word.html#t:Word32">Word32</a> -&gt; <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"><a href="#v:ntohl">ntohl</a> :: <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Word.html#t:Word32">Word32</a> -&gt; <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">data</span> <a href="#t:ShutdownCmd">ShutdownCmd</a><ul class="subs"><li>= <a href="#v:ShutdownReceive">ShutdownReceive</a></li><li>| <a href="#v:ShutdownSend">ShutdownSend</a></li><li>| <a href="#v:ShutdownBoth">ShutdownBoth</a></li></ul></li><li class="src short"><span class="keyword">type</span> <a href="#t:ProtocolNumber">ProtocolNumber</a> = <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Foreign-C-Types.html#t:CInt">CInt</a></li><li class="src short"><a href="#v:defaultProtocol">defaultProtocol</a> :: <a href="Network-Socket.html#t:ProtocolNumber">ProtocolNumber</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">type</span> <a href="#t:HostName">HostName</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 class="src short"><span class="keyword">type</span> <a href="#t:ServiceName">ServiceName</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 class="src short"><span class="keyword">data</span> <a href="#t:AddrInfo">AddrInfo</a> = <a href="#v:AddrInfo">AddrInfo</a> {<ul class="subs"><li><a href="#v:addrFlags">addrFlags</a> :: [<a href="Network-Socket.html#t:AddrInfoFlag">AddrInfoFlag</a>]</li><li><a href="#v:addrFamily">addrFamily</a> :: <a href="Network-Socket.html#t:Family">Family</a></li><li><a href="#v:addrSocketType">addrSocketType</a> :: <a href="Network-Socket.html#t:SocketType">SocketType</a></li><li><a href="#v:addrProtocol">addrProtocol</a> :: <a href="Network-Socket.html#t:ProtocolNumber">ProtocolNumber</a></li><li><a href="#v:addrAddress">addrAddress</a> :: <a href="Network-Socket.html#t:SockAddr">SockAddr</a></li><li><a href="#v:addrCanonName">addrCanonName</a> :: <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Maybe.html#t:Maybe">Maybe</a> <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-String.html#t:String">String</a></li></ul>}</li><li class="src short"><span class="keyword">data</span> <a href="#t:AddrInfoFlag">AddrInfoFlag</a><ul class="subs"><li>= <a href="#v:AI_ADDRCONFIG">AI_ADDRCONFIG</a></li><li>| <a href="#v:AI_ALL">AI_ALL</a></li><li>| <a href="#v:AI_CANONNAME">AI_CANONNAME</a></li><li>| <a href="#v:AI_NUMERICHOST">AI_NUMERICHOST</a></li><li>| <a href="#v:AI_NUMERICSERV">AI_NUMERICSERV</a></li><li>| <a href="#v:AI_PASSIVE">AI_PASSIVE</a></li><li>| <a href="#v:AI_V4MAPPED">AI_V4MAPPED</a></li></ul></li><li class="src short"><a href="#v:addrInfoFlagImplemented">addrInfoFlagImplemented</a> :: <a href="Network-Socket.html#t:AddrInfoFlag">AddrInfoFlag</a> -&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Bool.html#t:Bool">Bool</a></li><li class="src short"><a href="#v:defaultHints">defaultHints</a> :: <a href="Network-Socket.html#t:AddrInfo">AddrInfo</a></li><li class="src short"><a href="#v:getAddrInfo">getAddrInfo</a> :: <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Maybe.html#t:Maybe">Maybe</a> <a href="Network-Socket.html#t:AddrInfo">AddrInfo</a> -&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Maybe.html#t:Maybe">Maybe</a> <a href="Network-Socket.html#t:HostName">HostName</a> -&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Maybe.html#t:Maybe">Maybe</a> <a href="Network-Socket.html#t:ServiceName">ServiceName</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.html#t:AddrInfo">AddrInfo</a>]</li><li class="src short"><span class="keyword">data</span> <a href="#t:NameInfoFlag">NameInfoFlag</a><ul class="subs"><li>= <a href="#v:NI_DGRAM">NI_DGRAM</a></li><li>| <a href="#v:NI_NAMEREQD">NI_NAMEREQD</a></li><li>| <a href="#v:NI_NOFQDN">NI_NOFQDN</a></li><li>| <a href="#v:NI_NUMERICHOST">NI_NUMERICHOST</a></li><li>| <a href="#v:NI_NUMERICSERV">NI_NUMERICSERV</a></li></ul></li><li class="src short"><a href="#v:getNameInfo">getNameInfo</a> :: [<a href="Network-Socket.html#t:NameInfoFlag">NameInfoFlag</a>] -&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Bool.html#t:Bool">Bool</a> -&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Bool.html#t:Bool">Bool</a> -&gt; <a href="Network-Socket.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="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Maybe.html#t:Maybe">Maybe</a> <a href="Network-Socket.html#t:HostName">HostName</a>, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Maybe.html#t:Maybe">Maybe</a> <a href="Network-Socket.html#t:ServiceName">ServiceName</a>)</li><li class="src short"><a href="#v:socket">socket</a> :: <a href="Network-Socket.html#t:Family">Family</a> -&gt; <a href="Network-Socket.html#t:SocketType">SocketType</a> -&gt; <a href="Network-Socket.html#t:ProtocolNumber">ProtocolNumber</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.html#t:Socket">Socket</a></li><li class="src short"><a href="#v:socketPair">socketPair</a> :: <a href="Network-Socket.html#t:Family">Family</a> -&gt; <a href="Network-Socket.html#t:SocketType">SocketType</a> -&gt; <a href="Network-Socket.html#t:ProtocolNumber">ProtocolNumber</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.html#t:Socket">Socket</a>, <a href="Network-Socket.html#t:Socket">Socket</a>)</li><li class="src short"><a href="#v:connect">connect</a> :: <a href="Network-Socket.html#t:Socket">Socket</a> -&gt; <a href="Network-Socket.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:bind">bind</a> :: <a href="Network-Socket.html#t:Socket">Socket</a> -&gt; <a href="Network-Socket.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:listen">listen</a> :: <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-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> ()</li><li class="src short"><a href="#v:accept">accept</a> :: <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/System-IO.html#t:IO">IO</a> (<a href="Network-Socket.html#t:Socket">Socket</a>, <a href="Network-Socket.html#t:SockAddr">SockAddr</a>)</li><li class="src short"><a href="#v:getPeerName">getPeerName</a> :: <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/System-IO.html#t:IO">IO</a> <a href="Network-Socket.html#t:SockAddr">SockAddr</a></li><li class="src short"><a href="#v:getSocketName">getSocketName</a> :: <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/System-IO.html#t:IO">IO</a> <a href="Network-Socket.html#t:SockAddr">SockAddr</a></li><li class="src short"><a href="#v:getPeerCred">getPeerCred</a> :: <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/System-IO.html#t:IO">IO</a> (<a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Foreign-C-Types.html#t:CUInt">CUInt</a>, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Foreign-C-Types.html#t:CUInt">CUInt</a>, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Foreign-C-Types.html#t:CUInt">CUInt</a>)</li><li class="src short"><a href="#v:socketPort">socketPort</a> :: <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/System-IO.html#t:IO">IO</a> <a href="Network-Socket.html#t:PortNumber">PortNumber</a></li><li class="src short"><a href="#v:socketToHandle">socketToHandle</a> :: <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/System-IO.html#t:IOMode">IOMode</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="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/GHC-IO-Handle.html#t:Handle">Handle</a></li><li class="src short"><a href="#v:send">send</a> :: <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 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:sendTo">sendTo</a> :: <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="Network-Socket.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="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:recv">recv</a> :: <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-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="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-String.html#t:String">String</a></li><li class="src short"><a href="#v:recvFrom">recvFrom</a> :: <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-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="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-String.html#t:String">String</a>, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Int.html#t:Int">Int</a>, <a href="Network-Socket.html#t:SockAddr">SockAddr</a>)</li><li class="src short"><a href="#v:recvLen">recvLen</a> :: <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-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="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-String.html#t:String">String</a>, <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:sendBuf">sendBuf</a> :: <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/Foreign-Ptr.html#t:Ptr">Ptr</a> <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Word.html#t:Word8">Word8</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="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:recvBuf">recvBuf</a> :: <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/Foreign-Ptr.html#t:Ptr">Ptr</a> <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Word.html#t:Word8">Word8</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="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:sendBufTo">sendBufTo</a> :: <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/Foreign-Ptr.html#t:Ptr">Ptr</a> 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.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="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:recvBufFrom">recvBufFrom</a> :: <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/Foreign-Ptr.html#t:Ptr">Ptr</a> 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="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Int.html#t:Int">Int</a>, <a href="Network-Socket.html#t:SockAddr">SockAddr</a>)</li><li class="src short"><a href="#v:inet_addr">inet_addr</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 href="Network-Socket.html#t:HostAddress">HostAddress</a></li><li class="src short"><a href="#v:inet_ntoa">inet_ntoa</a> :: <a href="Network-Socket.html#t:HostAddress">HostAddress</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="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-String.html#t:String">String</a></li><li class="src short"><a href="#v:shutdown">shutdown</a> :: <a href="Network-Socket.html#t:Socket">Socket</a> -&gt; <a href="Network-Socket.html#t:ShutdownCmd">ShutdownCmd</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:close">close</a> :: <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/System-IO.html#t:IO">IO</a> ()</li><li class="src short"><a href="#v:isConnected">isConnected</a> :: <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/System-IO.html#t:IO">IO</a> <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Bool.html#t:Bool">Bool</a></li><li class="src short"><a href="#v:isBound">isBound</a> :: <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/System-IO.html#t:IO">IO</a> <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Bool.html#t:Bool">Bool</a></li><li class="src short"><a href="#v:isListening">isListening</a> :: <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/System-IO.html#t:IO">IO</a> <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Bool.html#t:Bool">Bool</a></li><li class="src short"><a href="#v:isReadable">isReadable</a> :: <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/System-IO.html#t:IO">IO</a> <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Bool.html#t:Bool">Bool</a></li><li class="src short"><a href="#v:isWritable">isWritable</a> :: <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/System-IO.html#t:IO">IO</a> <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Bool.html#t:Bool">Bool</a></li><li class="src short"><span class="keyword">data</span> <a href="#t:SocketOption">SocketOption</a><ul class="subs"><li>= <a href="#v:Debug">Debug</a></li><li>| <a href="#v:ReuseAddr">ReuseAddr</a></li><li>| <a href="#v:Type">Type</a></li><li>| <a href="#v:SoError">SoError</a></li><li>| <a href="#v:DontRoute">DontRoute</a></li><li>| <a href="#v:Broadcast">Broadcast</a></li><li>| <a href="#v:SendBuffer">SendBuffer</a></li><li>| <a href="#v:RecvBuffer">RecvBuffer</a></li><li>| <a href="#v:KeepAlive">KeepAlive</a></li><li>| <a href="#v:OOBInline">OOBInline</a></li><li>| <a href="#v:TimeToLive">TimeToLive</a></li><li>| <a href="#v:MaxSegment">MaxSegment</a></li><li>| <a href="#v:NoDelay">NoDelay</a></li><li>| <a href="#v:Cork">Cork</a></li><li>| <a href="#v:Linger">Linger</a></li><li>| <a href="#v:ReusePort">ReusePort</a></li><li>| <a href="#v:RecvLowWater">RecvLowWater</a></li><li>| <a href="#v:SendLowWater">SendLowWater</a></li><li>| <a href="#v:RecvTimeOut">RecvTimeOut</a></li><li>| <a href="#v:SendTimeOut">SendTimeOut</a></li><li>| <a href="#v:UseLoopBack">UseLoopBack</a></li><li>| <a href="#v:UserTimeout">UserTimeout</a></li><li>| <a href="#v:IPv6Only">IPv6Only</a></li><li>| <a href="#v:CustomSockOpt">CustomSockOpt</a> (<a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Foreign-C-Types.html#t:CInt">CInt</a>, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Foreign-C-Types.html#t:CInt">CInt</a>)</li></ul></li><li class="src short"><a href="#v:isSupportedSocketOption">isSupportedSocketOption</a> :: <a href="Network-Socket.html#t:SocketOption">SocketOption</a> -&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Bool.html#t:Bool">Bool</a></li><li class="src short"><a href="#v:getSocketOption">getSocketOption</a> :: <a href="Network-Socket.html#t:Socket">Socket</a> -&gt; <a href="Network-Socket.html#t:SocketOption">SocketOption</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="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:setSocketOption">setSocketOption</a> :: <a href="Network-Socket.html#t:Socket">Socket</a> -&gt; <a href="Network-Socket.html#t:SocketOption">SocketOption</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> ()</li><li class="src short"><a href="#v:sendFd">sendFd</a> :: <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/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> ()</li><li class="src short"><a href="#v:recvFd">recvFd</a> :: <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/System-IO.html#t:IO">IO</a> <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Foreign-C-Types.html#t:CInt">CInt</a></li><li class="src short"><a href="#v:aNY_PORT">aNY_PORT</a> :: <a href="Network-Socket.html#t:PortNumber">PortNumber</a></li><li class="src short"><a href="#v:iNADDR_ANY">iNADDR_ANY</a> :: <a href="Network-Socket.html#t:HostAddress">HostAddress</a></li><li class="src short"><a href="#v:iN6ADDR_ANY">iN6ADDR_ANY</a> :: <a href="Network-Socket.html#t:HostAddress6">HostAddress6</a></li><li class="src short"><a href="#v:sOMAXCONN">sOMAXCONN</a> :: <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:sOL_SOCKET">sOL_SOCKET</a> :: <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:sCM_RIGHTS">sCM_RIGHTS</a> :: <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:maxListenQueue">maxListenQueue</a> :: <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: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:fdSocket">fdSocket</a> :: <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/Foreign-C-Types.html#t:CInt">CInt</a></li><li class="src short"><a href="#v:mkSocket">mkSocket</a> :: <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="Network-Socket.html#t:Family">Family</a> -&gt; <a href="Network-Socket.html#t:SocketType">SocketType</a> -&gt; <a href="Network-Socket.html#t:ProtocolNumber">ProtocolNumber</a> -&gt; <a href="Network-Socket.html#t:SocketStatus">SocketStatus</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.html#t:Socket">Socket</a></li><li class="src short"><a href="#v:bindSocket">bindSocket</a> :: <a href="Network-Socket.html#t:Socket">Socket</a> -&gt; <a href="Network-Socket.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:sClose">sClose</a> :: <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/System-IO.html#t:IO">IO</a> ()</li><li class="src short"><a href="#v:sIsConnected">sIsConnected</a> :: <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/System-IO.html#t:IO">IO</a> <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Bool.html#t:Bool">Bool</a></li><li class="src short"><a href="#v:sIsBound">sIsBound</a> :: <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/System-IO.html#t:IO">IO</a> <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Bool.html#t:Bool">Bool</a></li><li class="src short"><a href="#v:sIsListening">sIsListening</a> :: <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/System-IO.html#t:IO">IO</a> <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Bool.html#t:Bool">Bool</a></li><li class="src short"><a href="#v:sIsReadable">sIsReadable</a> :: <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/System-IO.html#t:IO">IO</a> <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Bool.html#t:Bool">Bool</a></li><li class="src short"><a href="#v:sIsWritable">sIsWritable</a> :: <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/System-IO.html#t:IO">IO</a> <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Bool.html#t:Bool">Bool</a></li><li class="src short"><a href="#v:packFamily">packFamily</a> :: <a href="Network-Socket.html#t:Family">Family</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></li><li class="src short"><a href="#v:unpackFamily">unpackFamily</a> :: <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="Network-Socket.html#t:Family">Family</a></li><li class="src short"><a href="#v:packSocketType">packSocketType</a> :: <a href="Network-Socket.html#t:SocketType">SocketType</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></li></ul></div><div id="interface"><h1 id="g:1">Types</h1><div class="top"><p class="src"><span class="keyword">data</span> <a id="t:Socket" class="def">Socket</a> <a href="src/Network-Socket-Types.html#Socket" class="link">Source</a> <a href="#t:Socket" class="selflink">#</a></p><div class="doc"><p>Represents a socket.  The fields are, respectively:</p><ul><li>File descriptor</li><li>Socket family</li><li>Socket type</li><li>Protocol number</li><li>Status flag</li></ul><p>If you are calling the <code><a href="Network-Socket.html#v:MkSocket">MkSocket</a></code> constructor directly you should ensure
   you have called <code><a href="Network.html#v:withSocketsDo">withSocketsDo</a></code>.</p></div><div class="subs constructors"><p class="caption">Constructors</p><table><tr><td class="src"><a id="v:MkSocket" class="def">MkSocket</a> <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Foreign-C-Types.html#t:CInt">CInt</a> <a href="Network-Socket.html#t:Family">Family</a> <a href="Network-Socket.html#t:SocketType">SocketType</a> <a href="Network-Socket.html#t:ProtocolNumber">ProtocolNumber</a> (<a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Control-Concurrent-MVar.html#t:MVar">MVar</a> <a href="Network-Socket.html#t:SocketStatus">SocketStatus</a>)</td><td class="doc empty">&nbsp;</td></tr></table></div><div class="subs instances"><p id="control.i:Socket" class="caption collapser" onclick="toggleSection('i:Socket')">Instances</p><div id="section.i:Socket" class="show"><table><tr><td class="src clearfix"><span class="inst-left"><span id="control.i:id:Socket:Eq:1" class="instance expander" onclick="toggleSection('i:id:Socket: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.html#t:Socket">Socket</a></span> <a href="src/Network-Socket-Types.html#line-110" class="link">Source</a> <a href="#t:Socket" class="selflink">#</a></td><td class="doc empty">&nbsp;</td></tr><tr><td colspan="2"><div id="section.i:id:Socket: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.html#t:Socket">Socket</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-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.html#t:Socket">Socket</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-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:Socket:Show:2" class="instance expander" onclick="toggleSection('i:id:Socket:Show:2')"></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.html#t:Socket">Socket</a></span> <a href="src/Network-Socket-Types.html#line-113" class="link">Source</a> <a href="#t:Socket" class="selflink">#</a></td><td class="doc empty">&nbsp;</td></tr><tr><td colspan="2"><div id="section.i:id:Socket:Show:2" 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.html#t:Socket">Socket</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.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> <a href="#v:show" class="selflink">#</a></p><p class="src"><a href="#v:showList">showList</a> :: [<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/Text-Show.html#t:ShowS">ShowS</a> <a href="#v:showList" 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: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.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.html#t:Family">Family</a> -&gt; <a href="Network-Socket.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.html#t:Family">Family</a> -&gt; <a href="Network-Socket.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.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.html#t:Family">Family</a> -&gt; <a href="Network-Socket.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.html#t:Family">Family</a> -&gt; <a href="Network-Socket.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.html#t:Family">Family</a> -&gt; <a href="Network-Socket.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.html#t:Family">Family</a> -&gt; <a href="Network-Socket.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.html#t:Family">Family</a> -&gt; <a href="Network-Socket.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.html#t:Family">Family</a> -&gt; <a href="Network-Socket.html#t:Family">Family</a> -&gt; <a href="Network-Socket.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.html#t:Family">Family</a> -&gt; <a href="Network-Socket.html#t:Family">Family</a> -&gt; <a href="Network-Socket.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.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.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.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.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.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.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.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.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.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><div class="top"><p class="src"><a id="v:isSupportedFamily" class="def">isSupportedFamily</a> :: <a href="Network-Socket.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="src/Network-Socket-Types.html#isSupportedFamily" class="link">Source</a> <a href="#v:isSupportedFamily" class="selflink">#</a></p><div class="doc"><p>Does the AF_ constant corresponding to the given family exist on this
 system?</p></div></div><div class="top"><p class="src"><span class="keyword">data</span> <a id="t:SocketType" class="def">SocketType</a> <a href="src/Network-Socket-Types.html#SocketType" class="link">Source</a> <a href="#t:SocketType" class="selflink">#</a></p><div class="doc"><p>Socket Types.</p><p>The existence of a constructor does not necessarily imply that that
 socket type is supported on your system: see <code><a href="Network-Socket.html#v:isSupportedSocketType">isSupportedSocketType</a></code>.</p></div><div class="subs constructors"><p class="caption">Constructors</p><table><tr><td class="src"><a id="v:NoSocketType" class="def">NoSocketType</a></td><td class="doc"><p>0, used in getAddrInfo hints, for example</p></td></tr><tr><td class="src"><a id="v:Stream" class="def">Stream</a></td><td class="doc"><p>SOCK_STREAM</p></td></tr><tr><td class="src"><a id="v:Datagram" class="def">Datagram</a></td><td class="doc"><p>SOCK_DGRAM</p></td></tr><tr><td class="src"><a id="v:Raw" class="def">Raw</a></td><td class="doc"><p>SOCK_RAW</p></td></tr><tr><td class="src"><a id="v:RDM" class="def">RDM</a></td><td class="doc"><p>SOCK_RDM</p></td></tr><tr><td class="src"><a id="v:SeqPacket" class="def">SeqPacket</a></td><td class="doc"><p>SOCK_SEQPACKET</p></td></tr></table></div><div class="subs instances"><p id="control.i:SocketType" class="caption collapser" onclick="toggleSection('i:SocketType')">Instances</p><div id="section.i:SocketType" class="show"><table><tr><td class="src clearfix"><span class="inst-left"><span id="control.i:id:SocketType:Eq:1" class="instance expander" onclick="toggleSection('i:id:SocketType: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.html#t:SocketType">SocketType</a></span> <a href="src/Network-Socket-Types.html#line-162" class="link">Source</a> <a href="#t:SocketType" class="selflink">#</a></td><td class="doc empty">&nbsp;</td></tr><tr><td colspan="2"><div id="section.i:id:SocketType: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.html#t:SocketType">SocketType</a> -&gt; <a href="Network-Socket.html#t:SocketType">SocketType</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.html#t:SocketType">SocketType</a> -&gt; <a href="Network-Socket.html#t:SocketType">SocketType</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:SocketType:Ord:2" class="instance expander" onclick="toggleSection('i:id:SocketType: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.html#t:SocketType">SocketType</a></span> <a href="src/Network-Socket-Types.html#line-162" class="link">Source</a> <a href="#t:SocketType" class="selflink">#</a></td><td class="doc empty">&nbsp;</td></tr><tr><td colspan="2"><div id="section.i:id:SocketType: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.html#t:SocketType">SocketType</a> -&gt; <a href="Network-Socket.html#t:SocketType">SocketType</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.html#t:SocketType">SocketType</a> -&gt; <a href="Network-Socket.html#t:SocketType">SocketType</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.html#t:SocketType">SocketType</a> -&gt; <a href="Network-Socket.html#t:SocketType">SocketType</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.html#t:SocketType">SocketType</a> -&gt; <a href="Network-Socket.html#t:SocketType">SocketType</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.html#t:SocketType">SocketType</a> -&gt; <a href="Network-Socket.html#t:SocketType">SocketType</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.html#t:SocketType">SocketType</a> -&gt; <a href="Network-Socket.html#t:SocketType">SocketType</a> -&gt; <a href="Network-Socket.html#t:SocketType">SocketType</a> <a href="#v:max" class="selflink">#</a></p><p class="src"><a href="#v:min">min</a> :: <a href="Network-Socket.html#t:SocketType">SocketType</a> -&gt; <a href="Network-Socket.html#t:SocketType">SocketType</a> -&gt; <a href="Network-Socket.html#t:SocketType">SocketType</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:SocketType:Read:3" class="instance expander" onclick="toggleSection('i:id:SocketType: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.html#t:SocketType">SocketType</a></span> <a href="src/Network-Socket-Types.html#line-162" class="link">Source</a> <a href="#t:SocketType" class="selflink">#</a></td><td class="doc empty">&nbsp;</td></tr><tr><td colspan="2"><div id="section.i:id:SocketType: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.html#t:SocketType">SocketType</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.html#t:SocketType">SocketType</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.html#t:SocketType">SocketType</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.html#t:SocketType">SocketType</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:SocketType:Show:4" class="instance expander" onclick="toggleSection('i:id:SocketType: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.html#t:SocketType">SocketType</a></span> <a href="src/Network-Socket-Types.html#line-162" class="link">Source</a> <a href="#t:SocketType" class="selflink">#</a></td><td class="doc empty">&nbsp;</td></tr><tr><td colspan="2"><div id="section.i:id:SocketType: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.html#t:SocketType">SocketType</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.html#t:SocketType">SocketType</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.html#t:SocketType">SocketType</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><div class="top"><p class="src"><a id="v:isSupportedSocketType" class="def">isSupportedSocketType</a> :: <a href="Network-Socket.html#t:SocketType">SocketType</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="src/Network-Socket-Types.html#isSupportedSocketType" class="link">Source</a> <a href="#v:isSupportedSocketType" class="selflink">#</a></p><div class="doc"><p>Does the SOCK_ constant corresponding to the given SocketType exist on
 this system?</p></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.html#t:PortNumber">PortNumber</a> <a href="Network-Socket.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.html#t:PortNumber">PortNumber</a> <a href="Network-Socket.html#t:FlowInfo">FlowInfo</a> <a href="Network-Socket.html#t:HostAddress6">HostAddress6</a> <a href="Network-Socket.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.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.html#t:SockAddr">SockAddr</a> -&gt; <a href="Network-Socket.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.html#t:SockAddr">SockAddr</a> -&gt; <a href="Network-Socket.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.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.html#t:SockAddr">SockAddr</a> -&gt; <a href="Network-Socket.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.html#t:SockAddr">SockAddr</a> -&gt; <a href="Network-Socket.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.html#t:SockAddr">SockAddr</a> -&gt; <a href="Network-Socket.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.html#t:SockAddr">SockAddr</a> -&gt; <a href="Network-Socket.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.html#t:SockAddr">SockAddr</a> -&gt; <a href="Network-Socket.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.html#t:SockAddr">SockAddr</a> -&gt; <a href="Network-Socket.html#t:SockAddr">SockAddr</a> -&gt; <a href="Network-Socket.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.html#t:SockAddr">SockAddr</a> -&gt; <a href="Network-Socket.html#t:SockAddr">SockAddr</a> -&gt; <a href="Network-Socket.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:isSupportedSockAddr" class="def">isSupportedSockAddr</a> :: <a href="Network-Socket.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="src/Network-Socket-Types.html#isSupportedSockAddr" class="link">Source</a> <a href="#v:isSupportedSockAddr" class="selflink">#</a></p><div class="doc"><p>Is the socket address type supported on this system?</p></div></div><div class="top"><p class="src"><span class="keyword">data</span> <a id="t:SocketStatus" class="def">SocketStatus</a> <a href="src/Network-Socket-Types.html#SocketStatus" class="link">Source</a> <a href="#t:SocketStatus" class="selflink">#</a></p><div class="doc"><p>The status of the socket as <em>determined by this library</em>, not
 necessarily reflecting the state of the connection itself.</p><p>For example, the <code><a href="Network-Socket.html#v:Closed">Closed</a></code> status is applied when the <code>close</code>
 function is called.</p></div><div class="subs constructors"><p class="caption">Constructors</p><table><tr><td class="src"><a id="v:NotConnected" class="def">NotConnected</a></td><td class="doc"><p>Newly created, unconnected socket</p></td></tr><tr><td class="src"><a id="v:Bound" class="def">Bound</a></td><td class="doc"><p>Bound, via <code>bind</code></p></td></tr><tr><td class="src"><a id="v:Listening" class="def">Listening</a></td><td class="doc"><p>Listening, via <code>listen</code></p></td></tr><tr><td class="src"><a id="v:Connected" class="def">Connected</a></td><td class="doc"><p>Connected or accepted, via <code>connect</code> or <code>accept</code></p></td></tr><tr><td class="src"><a id="v:ConvertedToHandle" class="def">ConvertedToHandle</a></td><td class="doc"><p>Is now a <code>Handle</code> (via <code>socketToHandle</code>), don't touch</p></td></tr><tr><td class="src"><a id="v:Closed" class="def">Closed</a></td><td class="doc"><p>Closed was closed by <code>close</code></p></td></tr></table></div><div class="subs instances"><p id="control.i:SocketStatus" class="caption collapser" onclick="toggleSection('i:SocketStatus')">Instances</p><div id="section.i:SocketStatus" class="show"><table><tr><td class="src clearfix"><span class="inst-left"><span id="control.i:id:SocketStatus:Eq:1" class="instance expander" onclick="toggleSection('i:id:SocketStatus: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.html#t:SocketStatus">SocketStatus</a></span> <a href="src/Network-Socket-Types.html#line-132" class="link">Source</a> <a href="#t:SocketStatus" class="selflink">#</a></td><td class="doc empty">&nbsp;</td></tr><tr><td colspan="2"><div id="section.i:id:SocketStatus: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.html#t:SocketStatus">SocketStatus</a> -&gt; <a href="Network-Socket.html#t:SocketStatus">SocketStatus</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.html#t:SocketStatus">SocketStatus</a> -&gt; <a href="Network-Socket.html#t:SocketStatus">SocketStatus</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:SocketStatus:Show:2" class="instance expander" onclick="toggleSection('i:id:SocketStatus:Show:2')"></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.html#t:SocketStatus">SocketStatus</a></span> <a href="src/Network-Socket-Types.html#line-132" class="link">Source</a> <a href="#t:SocketStatus" class="selflink">#</a></td><td class="doc empty">&nbsp;</td></tr><tr><td colspan="2"><div id="section.i:id:SocketStatus:Show:2" 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.html#t:SocketStatus">SocketStatus</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.html#t:SocketStatus">SocketStatus</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.html#t:SocketStatus">SocketStatus</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><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"><a id="v:hostAddressToTuple" class="def">hostAddressToTuple</a> :: <a href="Network-Socket.html#t:HostAddress">HostAddress</a> -&gt; (<a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Word.html#t:Word8">Word8</a>, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Word.html#t:Word8">Word8</a>, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Word.html#t:Word8">Word8</a>, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Word.html#t:Word8">Word8</a>) <a href="src/Network-Socket-Types.html#hostAddressToTuple" class="link">Source</a> <a href="#v:hostAddressToTuple" class="selflink">#</a></p><div class="doc"><p>Converts <code><a href="Network-Socket.html#t:HostAddress">HostAddress</a></code> to representation-independent IPv4 quadruple.
 For example for <code>127.0.0.1</code> the function will return <code>(0x7f, 0, 0, 1)</code>
 regardless of host endianness.</p></div></div><div class="top"><p class="src"><a id="v:tupleToHostAddress" class="def">tupleToHostAddress</a> :: (<a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Word.html#t:Word8">Word8</a>, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Word.html#t:Word8">Word8</a>, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Word.html#t:Word8">Word8</a>, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Word.html#t:Word8">Word8</a>) -&gt; <a href="Network-Socket.html#t:HostAddress">HostAddress</a> <a href="src/Network-Socket-Types.html#tupleToHostAddress" class="link">Source</a> <a href="#v:tupleToHostAddress" class="selflink">#</a></p><div class="doc"><p>Converts IPv4 quadruple to <code><a href="Network-Socket.html#t:HostAddress">HostAddress</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"><a id="v:hostAddress6ToTuple" class="def">hostAddress6ToTuple</a> :: <a href="Network-Socket.html#t:HostAddress6">HostAddress6</a> -&gt; (<a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Word.html#t:Word16">Word16</a>, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Word.html#t:Word16">Word16</a>, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Word.html#t:Word16">Word16</a>, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Word.html#t:Word16">Word16</a>, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Word.html#t:Word16">Word16</a>, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Word.html#t:Word16">Word16</a>, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Word.html#t:Word16">Word16</a>, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Word.html#t:Word16">Word16</a>) <a href="src/Network-Socket-Types.html#hostAddress6ToTuple" class="link">Source</a> <a href="#v:hostAddress6ToTuple" class="selflink">#</a></p></div><div class="top"><p class="src"><a id="v:tupleToHostAddress6" class="def">tupleToHostAddress6</a> :: (<a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Word.html#t:Word16">Word16</a>, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Word.html#t:Word16">Word16</a>, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Word.html#t:Word16">Word16</a>, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Word.html#t:Word16">Word16</a>, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Word.html#t:Word16">Word16</a>, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Word.html#t:Word16">Word16</a>, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Word.html#t:Word16">Word16</a>, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Word.html#t:Word16">Word16</a>) -&gt; <a href="Network-Socket.html#t:HostAddress6">HostAddress6</a> <a href="src/Network-Socket-Types.html#tupleToHostAddress6" class="link">Source</a> <a href="#v:tupleToHostAddress6" class="selflink">#</a></p></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"><a id="v:htonl" class="def">htonl</a> :: <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Word.html#t:Word32">Word32</a> -&gt; <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.html#htonl" class="link">Source</a> <a href="#v:htonl" class="selflink">#</a></p><div class="doc"><p>Converts the from host byte order to network byte order.</p></div></div><div class="top"><p class="src"><a id="v:ntohl" class="def">ntohl</a> :: <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Word.html#t:Word32">Word32</a> -&gt; <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.html#ntohl" class="link">Source</a> <a href="#v:ntohl" class="selflink">#</a></p><div class="doc"><p>Converts the from network byte order to host byte order.</p></div></div><div class="top"><p class="src"><span class="keyword">data</span> <a id="t:ShutdownCmd" class="def">ShutdownCmd</a> <a href="src/Network-Socket.html#ShutdownCmd" class="link">Source</a> <a href="#t:ShutdownCmd" class="selflink">#</a></p><div class="subs constructors"><p class="caption">Constructors</p><table><tr><td class="src"><a id="v:ShutdownReceive" class="def">ShutdownReceive</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a id="v:ShutdownSend" class="def">ShutdownSend</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a id="v:ShutdownBoth" class="def">ShutdownBoth</a></td><td class="doc empty">&nbsp;</td></tr></table></div></div><div class="top"><p class="src"><span class="keyword">type</span> <a id="t:ProtocolNumber" class="def">ProtocolNumber</a> = <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Foreign-C-Types.html#t:CInt">CInt</a> <a href="src/Network-Socket-Types.html#ProtocolNumber" class="link">Source</a> <a href="#t:ProtocolNumber" class="selflink">#</a></p></div><div class="top"><p class="src"><a id="v:defaultProtocol" class="def">defaultProtocol</a> :: <a href="Network-Socket.html#t:ProtocolNumber">ProtocolNumber</a> <a href="src/Network-Socket.html#defaultProtocol" class="link">Source</a> <a href="#v:defaultProtocol" class="selflink">#</a></p><div class="doc"><p>This is the default protocol for a given service.</p></div></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.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.html#t:PortNumber">PortNumber</a> -&gt; <a href="Network-Socket.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.html#t:PortNumber">PortNumber</a> -&gt; <a href="Network-Socket.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.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.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.html#t:PortNumber">PortNumber</a> -&gt; [<a href="Network-Socket.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.html#t:PortNumber">PortNumber</a> -&gt; <a href="Network-Socket.html#t:PortNumber">PortNumber</a> -&gt; [<a href="Network-Socket.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.html#t:PortNumber">PortNumber</a> -&gt; <a href="Network-Socket.html#t:PortNumber">PortNumber</a> -&gt; [<a href="Network-Socket.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.html#t:PortNumber">PortNumber</a> -&gt; <a href="Network-Socket.html#t:PortNumber">PortNumber</a> -&gt; <a href="Network-Socket.html#t:PortNumber">PortNumber</a> -&gt; [<a href="Network-Socket.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.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.html#t:PortNumber">PortNumber</a> -&gt; <a href="Network-Socket.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.html#t:PortNumber">PortNumber</a> -&gt; <a href="Network-Socket.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.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.html#t:PortNumber">PortNumber</a> -&gt; <a href="Network-Socket.html#t:PortNumber">PortNumber</a> -&gt; <a href="Network-Socket.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.html#t:PortNumber">PortNumber</a> -&gt; <a href="Network-Socket.html#t:PortNumber">PortNumber</a> -&gt; <a href="Network-Socket.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.html#t:PortNumber">PortNumber</a> -&gt; <a href="Network-Socket.html#t:PortNumber">PortNumber</a> -&gt; <a href="Network-Socket.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.html#t:PortNumber">PortNumber</a> -&gt; <a href="Network-Socket.html#t:PortNumber">PortNumber</a> -&gt; <a href="Network-Socket.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.html#t:PortNumber">PortNumber</a> -&gt; <a href="Network-Socket.html#t:PortNumber">PortNumber</a> -&gt; (<a href="Network-Socket.html#t:PortNumber">PortNumber</a>, <a href="Network-Socket.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.html#t:PortNumber">PortNumber</a> -&gt; <a href="Network-Socket.html#t:PortNumber">PortNumber</a> -&gt; (<a href="Network-Socket.html#t:PortNumber">PortNumber</a>, <a href="Network-Socket.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.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.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.html#t:PortNumber">PortNumber</a> -&gt; <a href="Network-Socket.html#t:PortNumber">PortNumber</a> -&gt; <a href="Network-Socket.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.html#t:PortNumber">PortNumber</a> -&gt; <a href="Network-Socket.html#t:PortNumber">PortNumber</a> -&gt; <a href="Network-Socket.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.html#t:PortNumber">PortNumber</a> -&gt; <a href="Network-Socket.html#t:PortNumber">PortNumber</a> -&gt; <a href="Network-Socket.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.html#t:PortNumber">PortNumber</a> -&gt; <a href="Network-Socket.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.html#t:PortNumber">PortNumber</a> -&gt; <a href="Network-Socket.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.html#t:PortNumber">PortNumber</a> -&gt; <a href="Network-Socket.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.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.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.html#t:PortNumber">PortNumber</a> -&gt; <a href="Network-Socket.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.html#t:PortNumber">PortNumber</a> -&gt; <a href="Network-Socket.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.html#t:PortNumber">PortNumber</a> -&gt; <a href="Network-Socket.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.html#t:PortNumber">PortNumber</a> -&gt; <a href="Network-Socket.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.html#t:PortNumber">PortNumber</a> -&gt; <a href="Network-Socket.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.html#t:PortNumber">PortNumber</a> -&gt; <a href="Network-Socket.html#t:PortNumber">PortNumber</a> -&gt; <a href="Network-Socket.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.html#t:PortNumber">PortNumber</a> -&gt; <a href="Network-Socket.html#t:PortNumber">PortNumber</a> -&gt; <a href="Network-Socket.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.html#t:PortNumber">PortNumber</a> -&gt; <a href="Network-Socket.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><h1 id="g:2">Address operations</h1><div class="top"><p class="src"><span class="keyword">type</span> <a id="t:HostName" class="def">HostName</a> = <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-String.html#t:String">String</a> <a href="src/Network-Socket.html#HostName" class="link">Source</a> <a href="#t:HostName" class="selflink">#</a></p><div class="doc"><p>Either a host name e.g., <code>&quot;haskell.org&quot;</code> or a numeric host
 address string consisting of a dotted decimal IPv4 address or an
 IPv6 address e.g., <code>&quot;192.168.0.1&quot;</code>.</p></div></div><div class="top"><p class="src"><span class="keyword">type</span> <a id="t:ServiceName" class="def">ServiceName</a> = <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-String.html#t:String">String</a> <a href="src/Network-Socket.html#ServiceName" class="link">Source</a> <a href="#t:ServiceName" class="selflink">#</a></p></div><div class="top"><p class="src"><span class="keyword">data</span> <a id="t:AddrInfo" class="def">AddrInfo</a> <a href="src/Network-Socket.html#AddrInfo" class="link">Source</a> <a href="#t:AddrInfo" class="selflink">#</a></p><div class="subs constructors"><p class="caption">Constructors</p><table><tr><td class="src"><a id="v:AddrInfo" class="def">AddrInfo</a></td><td class="doc empty">&nbsp;</td></tr><tr><td colspan="2"><div class="subs fields"><p class="caption">Fields</p><ul><li><dfn class="src"><a id="v:addrFlags" class="def">addrFlags</a> :: [<a href="Network-Socket.html#t:AddrInfoFlag">AddrInfoFlag</a>]</dfn><div class="doc empty">&nbsp;</div></li><li><dfn class="src"><a id="v:addrFamily" class="def">addrFamily</a> :: <a href="Network-Socket.html#t:Family">Family</a></dfn><div class="doc empty">&nbsp;</div></li><li><dfn class="src"><a id="v:addrSocketType" class="def">addrSocketType</a> :: <a href="Network-Socket.html#t:SocketType">SocketType</a></dfn><div class="doc empty">&nbsp;</div></li><li><dfn class="src"><a id="v:addrProtocol" class="def">addrProtocol</a> :: <a href="Network-Socket.html#t:ProtocolNumber">ProtocolNumber</a></dfn><div class="doc empty">&nbsp;</div></li><li><dfn class="src"><a id="v:addrAddress" class="def">addrAddress</a> :: <a href="Network-Socket.html#t:SockAddr">SockAddr</a></dfn><div class="doc empty">&nbsp;</div></li><li><dfn class="src"><a id="v:addrCanonName" class="def">addrCanonName</a> :: <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Maybe.html#t:Maybe">Maybe</a> <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-String.html#t:String">String</a></dfn><div class="doc empty">&nbsp;</div></li></ul></div></td></tr></table></div><div class="subs instances"><p id="control.i:AddrInfo" class="caption collapser" onclick="toggleSection('i:AddrInfo')">Instances</p><div id="section.i:AddrInfo" class="show"><table><tr><td class="src clearfix"><span class="inst-left"><span id="control.i:id:AddrInfo:Eq:1" class="instance expander" onclick="toggleSection('i:id:AddrInfo: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.html#t:AddrInfo">AddrInfo</a></span> <a href="src/Network-Socket.html#line-1289" class="link">Source</a> <a href="#t:AddrInfo" class="selflink">#</a></td><td class="doc empty">&nbsp;</td></tr><tr><td colspan="2"><div id="section.i:id:AddrInfo: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.html#t:AddrInfo">AddrInfo</a> -&gt; <a href="Network-Socket.html#t:AddrInfo">AddrInfo</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.html#t:AddrInfo">AddrInfo</a> -&gt; <a href="Network-Socket.html#t:AddrInfo">AddrInfo</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:AddrInfo:Show:2" class="instance expander" onclick="toggleSection('i:id:AddrInfo:Show:2')"></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.html#t:AddrInfo">AddrInfo</a></span> <a href="src/Network-Socket.html#line-1289" class="link">Source</a> <a href="#t:AddrInfo" class="selflink">#</a></td><td class="doc empty">&nbsp;</td></tr><tr><td colspan="2"><div id="section.i:id:AddrInfo:Show:2" 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.html#t:AddrInfo">AddrInfo</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.html#t:AddrInfo">AddrInfo</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.html#t:AddrInfo">AddrInfo</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:AddrInfo:Storable:3" class="instance expander" onclick="toggleSection('i:id:AddrInfo:Storable:3')"></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.html#t:AddrInfo">AddrInfo</a></span> <a href="src/Network-Socket.html#line-1291" class="link">Source</a> <a href="#t:AddrInfo" class="selflink">#</a></td><td class="doc empty">&nbsp;</td></tr><tr><td colspan="2"><div id="section.i:id:AddrInfo:Storable:3" 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.html#t:AddrInfo">AddrInfo</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.html#t:AddrInfo">AddrInfo</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.html#t:AddrInfo">AddrInfo</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.html#t:AddrInfo">AddrInfo</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.html#t:AddrInfo">AddrInfo</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.html#t:AddrInfo">AddrInfo</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.html#t:AddrInfo">AddrInfo</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.html#t:AddrInfo">AddrInfo</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.html#t:AddrInfo">AddrInfo</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.html#t:AddrInfo">AddrInfo</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.html#t:AddrInfo">AddrInfo</a> -&gt; <a href="Network-Socket.html#t:AddrInfo">AddrInfo</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:AddrInfoFlag" class="def">AddrInfoFlag</a> <a href="src/Network-Socket.html#AddrInfoFlag" class="link">Source</a> <a href="#t:AddrInfoFlag" class="selflink">#</a></p><div class="doc"><p>Flags that control the querying behaviour of <code><a href="Network-Socket.html#v:getAddrInfo">getAddrInfo</a></code>.
   For more information, see <a href="https://tools.ietf.org/html/rfc3493#page-25">https://tools.ietf.org/html/rfc3493#page-25</a></p></div><div class="subs constructors"><p class="caption">Constructors</p><table><tr><td class="src"><a id="v:AI_ADDRCONFIG" class="def">AI_ADDRCONFIG</a></td><td class="doc"><p>The list of returned <code><a href="Network-Socket.html#t:AddrInfo">AddrInfo</a></code> values will
   only contain IPv4 addresses if the local system has at least
   one IPv4 interface configured, and likewise for IPv6.
   (Only some platforms support this.)</p></td></tr><tr><td class="src"><a id="v:AI_ALL" class="def">AI_ALL</a></td><td class="doc"><p>If <code><a href="Network-Socket.html#v:AI_ALL">AI_ALL</a></code> is specified, return all matching IPv6 and
   IPv4 addresses.  Otherwise, this flag has no effect.
   (Only some platforms support this.)</p></td></tr><tr><td class="src"><a id="v:AI_CANONNAME" class="def">AI_CANONNAME</a></td><td class="doc"><p>The <code><a href="Network-Socket.html#v:addrCanonName">addrCanonName</a></code> field of the first returned
   <code><a href="Network-Socket.html#t:AddrInfo">AddrInfo</a></code> will contain the &quot;canonical name&quot; of the host.</p></td></tr><tr><td class="src"><a id="v:AI_NUMERICHOST" class="def">AI_NUMERICHOST</a></td><td class="doc"><p>The <code><a href="Network-Socket.html#t:HostName">HostName</a></code> argument <em>must</em> be a numeric
   address in string form, and network name lookups will not be
   attempted.</p></td></tr><tr><td class="src"><a id="v:AI_NUMERICSERV" class="def">AI_NUMERICSERV</a></td><td class="doc"><p>The <code><a href="Network-Socket.html#t:ServiceName">ServiceName</a></code> argument <em>must</em> be a port
   number in string form, and service name lookups will not be
   attempted. (Only some platforms support this.)</p></td></tr><tr><td class="src"><a id="v:AI_PASSIVE" class="def">AI_PASSIVE</a></td><td class="doc"><p>If no <code><a href="Network-Socket.html#t:HostName">HostName</a></code> value is provided, the network
   address in each <code><a href="Network-Socket.html#t:SockAddr">SockAddr</a></code>
   will be left as a &quot;wild card&quot;, i.e. as either <code><a href="Network-Socket.html#v:iNADDR_ANY">iNADDR_ANY</a></code>
   or <code><a href="Network-Socket.html#v:iN6ADDR_ANY">iN6ADDR_ANY</a></code>.  This is useful for server applications that
   will accept connections from any client.</p></td></tr><tr><td class="src"><a id="v:AI_V4MAPPED" class="def">AI_V4MAPPED</a></td><td class="doc"><p>If an IPv6 lookup is performed, and no IPv6
   addresses are found, IPv6-mapped IPv4 addresses will be
   returned. (Only some platforms support this.)</p></td></tr></table></div><div class="subs instances"><p id="control.i:AddrInfoFlag" class="caption collapser" onclick="toggleSection('i:AddrInfoFlag')">Instances</p><div id="section.i:AddrInfoFlag" class="show"><table><tr><td class="src clearfix"><span class="inst-left"><span id="control.i:id:AddrInfoFlag:Eq:1" class="instance expander" onclick="toggleSection('i:id:AddrInfoFlag: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.html#t:AddrInfoFlag">AddrInfoFlag</a></span> <a href="src/Network-Socket.html#line-1244" class="link">Source</a> <a href="#t:AddrInfoFlag" class="selflink">#</a></td><td class="doc empty">&nbsp;</td></tr><tr><td colspan="2"><div id="section.i:id:AddrInfoFlag: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.html#t:AddrInfoFlag">AddrInfoFlag</a> -&gt; <a href="Network-Socket.html#t:AddrInfoFlag">AddrInfoFlag</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.html#t:AddrInfoFlag">AddrInfoFlag</a> -&gt; <a href="Network-Socket.html#t:AddrInfoFlag">AddrInfoFlag</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:AddrInfoFlag:Read:2" class="instance expander" onclick="toggleSection('i:id:AddrInfoFlag:Read:2')"></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.html#t:AddrInfoFlag">AddrInfoFlag</a></span> <a href="src/Network-Socket.html#line-1244" class="link">Source</a> <a href="#t:AddrInfoFlag" class="selflink">#</a></td><td class="doc empty">&nbsp;</td></tr><tr><td colspan="2"><div id="section.i:id:AddrInfoFlag:Read:2" 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.html#t:AddrInfoFlag">AddrInfoFlag</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.html#t:AddrInfoFlag">AddrInfoFlag</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.html#t:AddrInfoFlag">AddrInfoFlag</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.html#t:AddrInfoFlag">AddrInfoFlag</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:AddrInfoFlag:Show:3" class="instance expander" onclick="toggleSection('i:id:AddrInfoFlag:Show:3')"></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.html#t:AddrInfoFlag">AddrInfoFlag</a></span> <a href="src/Network-Socket.html#line-1244" class="link">Source</a> <a href="#t:AddrInfoFlag" class="selflink">#</a></td><td class="doc empty">&nbsp;</td></tr><tr><td colspan="2"><div id="section.i:id:AddrInfoFlag:Show:3" 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.html#t:AddrInfoFlag">AddrInfoFlag</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.html#t:AddrInfoFlag">AddrInfoFlag</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.html#t:AddrInfoFlag">AddrInfoFlag</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><div class="top"><p class="src"><a id="v:addrInfoFlagImplemented" class="def">addrInfoFlagImplemented</a> :: <a href="Network-Socket.html#t:AddrInfoFlag">AddrInfoFlag</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="src/Network-Socket.html#addrInfoFlagImplemented" class="link">Source</a> <a href="#v:addrInfoFlagImplemented" class="selflink">#</a></p><div class="doc"><p>Indicate whether the given <code><a href="Network-Socket.html#t:AddrInfoFlag">AddrInfoFlag</a></code> will have any effect on
 this system.</p></div></div><div class="top"><p class="src"><a id="v:defaultHints" class="def">defaultHints</a> :: <a href="Network-Socket.html#t:AddrInfo">AddrInfo</a> <a href="src/Network-Socket.html#defaultHints" class="link">Source</a> <a href="#v:defaultHints" class="selflink">#</a></p><div class="doc"><p>Default hints for address lookup with <code><a href="Network-Socket.html#v:getAddrInfo">getAddrInfo</a></code>.  The values
 of the <code><a href="Network-Socket.html#v:addrAddress">addrAddress</a></code> and <code><a href="Network-Socket.html#v:addrCanonName">addrCanonName</a></code> fields are <code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Prelude.html#v:undefined">undefined</a></code>,
 and are never inspected by <code><a href="Network-Socket.html#v:getAddrInfo">getAddrInfo</a></code>.</p><pre class="screen"><code class="prompt">&gt;&gt;&gt; </code><strong class="userinput"><code>addrFlags defaultHints
</code></strong>[]
<code class="prompt">&gt;&gt;&gt; </code><strong class="userinput"><code>addrFamily defaultHints
</code></strong>AF_UNSPEC
<code class="prompt">&gt;&gt;&gt; </code><strong class="userinput"><code>addrSocketType defaultHints
</code></strong>NoSocketType
<code class="prompt">&gt;&gt;&gt; </code><strong class="userinput"><code>addrProtocol defaultHints
</code></strong>0
</pre></div></div><div class="top"><p class="src"><a id="v:getAddrInfo" class="def">getAddrInfo</a> <a href="src/Network-Socket.html#getAddrInfo" class="link">Source</a> <a href="#v:getAddrInfo" 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-Maybe.html#t:Maybe">Maybe</a> <a href="Network-Socket.html#t:AddrInfo">AddrInfo</a></td><td class="doc"><p>preferred socket type or protocol</p></td></tr><tr><td class="src">-&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Maybe.html#t:Maybe">Maybe</a> <a href="Network-Socket.html#t:HostName">HostName</a></td><td class="doc"><p>host name to look up</p></td></tr><tr><td class="src">-&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Maybe.html#t:Maybe">Maybe</a> <a href="Network-Socket.html#t:ServiceName">ServiceName</a></td><td class="doc"><p>service name to look up</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 href="Network-Socket.html#t:AddrInfo">AddrInfo</a>]</td><td class="doc"><p>resolved addresses, with &quot;best&quot; first</p></td></tr></table></div><div class="doc"><p>Resolve a host or service name to one or more addresses.
 The <code><a href="Network-Socket.html#t:AddrInfo">AddrInfo</a></code> values that this function returns contain <code><a href="Network-Socket.html#t:SockAddr">SockAddr</a></code>
 values that you can pass directly to <code><a href="Network-Socket.html#v:connect">connect</a></code> or
 <code><a href="Network-Socket.html#v:bind">bind</a></code>.</p><p>This function is protocol independent.  It can return both IPv4 and
 IPv6 address information.</p><p>The <code><a href="Network-Socket.html#t:AddrInfo">AddrInfo</a></code> argument specifies the preferred query behaviour,
 socket options, or protocol.  You can override these conveniently
 using Haskell's record update syntax on <code><a href="Network-Socket.html#v:defaultHints">defaultHints</a></code>, for example
 as follows:</p><pre class="screen"><code class="prompt">&gt;&gt;&gt; </code><strong class="userinput"><code>let hints = defaultHints { addrFlags = [AI_NUMERICHOST], addrSocketType = Stream }
</code></strong></pre><p>You must provide a <code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Maybe.html#v:Just">Just</a></code> value for at least one of the <code><a href="Network-Socket.html#t:HostName">HostName</a></code>
 or <code><a href="Network-Socket.html#t:ServiceName">ServiceName</a></code> arguments.  <code><a href="Network-Socket.html#t:HostName">HostName</a></code> can be either a numeric
 network address (dotted quad for IPv4, colon-separated hex for
 IPv6) or a hostname.  In the latter case, its addresses will be
 looked up unless <code><a href="Network-Socket.html#v:AI_NUMERICHOST">AI_NUMERICHOST</a></code> is specified as a hint.  If you
 do not provide a <code><a href="Network-Socket.html#t:HostName">HostName</a></code> value <em>and</em> do not set <code><a href="Network-Socket.html#v:AI_PASSIVE">AI_PASSIVE</a></code> as
 a hint, network addresses in the result will contain the address of
 the loopback interface.</p><p>If the query fails, this function throws an IO exception instead of
 returning an empty list.  Otherwise, it returns a non-empty list
 of <code><a href="Network-Socket.html#t:AddrInfo">AddrInfo</a></code> values.</p><p>There are several reasons why a query might result in several
 values.  For example, the queried-for host could be multihomed, or
 the service might be available via several protocols.</p><p>Note: the order of arguments is slightly different to that defined
 for <code>getaddrinfo</code> in RFC 2553.  The <code><a href="Network-Socket.html#t:AddrInfo">AddrInfo</a></code> parameter comes first
 to make partial application easier.</p><pre class="screen"><code class="prompt">&gt;&gt;&gt; </code><strong class="userinput"><code>addr:_ &lt;- getAddrInfo (Just hints) (Just &quot;127.0.0.1&quot;) (Just &quot;http&quot;)
</code></strong><code class="prompt">&gt;&gt;&gt; </code><strong class="userinput"><code>addrAddress addr
</code></strong>127.0.0.1:80
</pre></div></div><div class="top"><p class="src"><span class="keyword">data</span> <a id="t:NameInfoFlag" class="def">NameInfoFlag</a> <a href="src/Network-Socket.html#NameInfoFlag" class="link">Source</a> <a href="#t:NameInfoFlag" class="selflink">#</a></p><div class="doc"><p>Flags that control the querying behaviour of <code><a href="Network-Socket.html#v:getNameInfo">getNameInfo</a></code>.
   For more information, see <a href="https://tools.ietf.org/html/rfc3493#page-30">https://tools.ietf.org/html/rfc3493#page-30</a></p></div><div class="subs constructors"><p class="caption">Constructors</p><table><tr><td class="src"><a id="v:NI_DGRAM" class="def">NI_DGRAM</a></td><td class="doc"><p>Resolve a datagram-based service name.  This is
   required only for the few protocols that have different port
   numbers for their datagram-based versions than for their
   stream-based versions.</p></td></tr><tr><td class="src"><a id="v:NI_NAMEREQD" class="def">NI_NAMEREQD</a></td><td class="doc"><p>If the hostname cannot be looked up, an IO error is thrown.</p></td></tr><tr><td class="src"><a id="v:NI_NOFQDN" class="def">NI_NOFQDN</a></td><td class="doc"><p>If a host is local, return only the hostname part of the FQDN.</p></td></tr><tr><td class="src"><a id="v:NI_NUMERICHOST" class="def">NI_NUMERICHOST</a></td><td class="doc"><p>The name of the host is not looked up.
   Instead, a numeric representation of the host's
   address is returned.  For an IPv4 address, this will be a
   dotted-quad string.  For IPv6, it will be colon-separated
   hexadecimal.</p></td></tr><tr><td class="src"><a id="v:NI_NUMERICSERV" class="def">NI_NUMERICSERV</a></td><td class="doc"><p>The name of the service is not
   looked up.  Instead, a numeric representation of the
   service is returned.</p></td></tr></table></div><div class="subs instances"><p id="control.i:NameInfoFlag" class="caption collapser" onclick="toggleSection('i:NameInfoFlag')">Instances</p><div id="section.i:NameInfoFlag" class="show"><table><tr><td class="src clearfix"><span class="inst-left"><span id="control.i:id:NameInfoFlag:Eq:1" class="instance expander" onclick="toggleSection('i:id:NameInfoFlag: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.html#t:NameInfoFlag">NameInfoFlag</a></span> <a href="src/Network-Socket.html#line-1355" class="link">Source</a> <a href="#t:NameInfoFlag" class="selflink">#</a></td><td class="doc empty">&nbsp;</td></tr><tr><td colspan="2"><div id="section.i:id:NameInfoFlag: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.html#t:NameInfoFlag">NameInfoFlag</a> -&gt; <a href="Network-Socket.html#t:NameInfoFlag">NameInfoFlag</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.html#t:NameInfoFlag">NameInfoFlag</a> -&gt; <a href="Network-Socket.html#t:NameInfoFlag">NameInfoFlag</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:NameInfoFlag:Read:2" class="instance expander" onclick="toggleSection('i:id:NameInfoFlag:Read:2')"></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.html#t:NameInfoFlag">NameInfoFlag</a></span> <a href="src/Network-Socket.html#line-1355" class="link">Source</a> <a href="#t:NameInfoFlag" class="selflink">#</a></td><td class="doc empty">&nbsp;</td></tr><tr><td colspan="2"><div id="section.i:id:NameInfoFlag:Read:2" 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.html#t:NameInfoFlag">NameInfoFlag</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.html#t:NameInfoFlag">NameInfoFlag</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.html#t:NameInfoFlag">NameInfoFlag</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.html#t:NameInfoFlag">NameInfoFlag</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:NameInfoFlag:Show:3" class="instance expander" onclick="toggleSection('i:id:NameInfoFlag:Show:3')"></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.html#t:NameInfoFlag">NameInfoFlag</a></span> <a href="src/Network-Socket.html#line-1355" class="link">Source</a> <a href="#t:NameInfoFlag" class="selflink">#</a></td><td class="doc empty">&nbsp;</td></tr><tr><td colspan="2"><div id="section.i:id:NameInfoFlag:Show:3" 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.html#t:NameInfoFlag">NameInfoFlag</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.html#t:NameInfoFlag">NameInfoFlag</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.html#t:NameInfoFlag">NameInfoFlag</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><div class="top"><p class="src"><a id="v:getNameInfo" class="def">getNameInfo</a> <a href="src/Network-Socket.html#getNameInfo" class="link">Source</a> <a href="#v:getNameInfo" class="selflink">#</a></p><div class="subs arguments"><p class="caption">Arguments</p><table><tr><td class="src">:: [<a href="Network-Socket.html#t:NameInfoFlag">NameInfoFlag</a>]</td><td class="doc"><p>flags to control lookup behaviour</p></td></tr><tr><td class="src">-&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Bool.html#t:Bool">Bool</a></td><td class="doc"><p>whether to look up a hostname</p></td></tr><tr><td class="src">-&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Bool.html#t:Bool">Bool</a></td><td class="doc"><p>whether to look up a service name</p></td></tr><tr><td class="src">-&gt; <a href="Network-Socket.html#t:SockAddr">SockAddr</a></td><td class="doc"><p>the address to look up</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 href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Maybe.html#t:Maybe">Maybe</a> <a href="Network-Socket.html#t:HostName">HostName</a>, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Maybe.html#t:Maybe">Maybe</a> <a href="Network-Socket.html#t:ServiceName">ServiceName</a>)</td><td class="doc empty">&nbsp;</td></tr></table></div><div class="doc"><p>Resolve an address to a host or service name.
 This function is protocol independent.
 The list of <code><a href="Network-Socket.html#t:NameInfoFlag">NameInfoFlag</a></code> values controls query behaviour.</p><p>If a host or service's name cannot be looked up, then the numeric
 form of the address or service will be returned.</p><p>If the query fails, this function throws an IO exception.</p><p>Example:
 <code>
   (hostName, _) &lt;- getNameInfo [] True False myAddress
 </code></p></div></div><h1 id="g:3">Socket operations</h1><div class="top"><p class="src"><a id="v:socket" class="def">socket</a> :: <a href="Network-Socket.html#t:Family">Family</a> -&gt; <a href="Network-Socket.html#t:SocketType">SocketType</a> -&gt; <a href="Network-Socket.html#t:ProtocolNumber">ProtocolNumber</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.html#t:Socket">Socket</a> <a href="src/Network-Socket.html#socket" class="link">Source</a> <a href="#v:socket" class="selflink">#</a></p><div class="doc"><p>Create a new socket using the given address family, socket type
 and protocol number.  The address family is usually <code><a href="Network-Socket.html#v:AF_INET">AF_INET</a></code>,
 <code><a href="Network-Socket.html#v:AF_INET6">AF_INET6</a></code>, or <code><a href="Network-Socket.html#v:AF_UNIX">AF_UNIX</a></code>.  The socket type is usually <code><a href="Network-Socket.html#v:Stream">Stream</a></code> or
 <code><a href="Network-Socket.html#v:Datagram">Datagram</a></code>.  The protocol number is usually <code><a href="Network-Socket.html#v:defaultProtocol">defaultProtocol</a></code>.
 If <code><a href="Network-Socket.html#v:AF_INET6">AF_INET6</a></code> is used and the socket type is <code><a href="Network-Socket.html#v:Stream">Stream</a></code> or <code><a href="Network-Socket.html#v:Datagram">Datagram</a></code>,
 the <code><a href="Network-Socket.html#v:IPv6Only">IPv6Only</a></code> socket option is set to 0 so that both IPv4 and IPv6
 can be handled with one socket.</p><pre class="screen"><code class="prompt">&gt;&gt;&gt; </code><strong class="userinput"><code>let hints = defaultHints { addrFlags = [AI_NUMERICHOST, AI_NUMERICSERV], addrSocketType = Stream }
</code></strong><code class="prompt">&gt;&gt;&gt; </code><strong class="userinput"><code>addr:_ &lt;- getAddrInfo (Just hints) (Just &quot;127.0.0.1&quot;) (Just &quot;5000&quot;)
</code></strong><code class="prompt">&gt;&gt;&gt; </code><strong class="userinput"><code>sock@(MkSocket _ fam stype _ _) &lt;- socket (addrFamily addr) (addrSocketType addr) (addrProtocol addr)
</code></strong><code class="prompt">&gt;&gt;&gt; </code><strong class="userinput"><code>fam
</code></strong>AF_INET
<code class="prompt">&gt;&gt;&gt; </code><strong class="userinput"><code>stype
</code></strong>Stream
<code class="prompt">&gt;&gt;&gt; </code><strong class="userinput"><code>bind sock (addrAddress addr)
</code></strong><code class="prompt">&gt;&gt;&gt; </code><strong class="userinput"><code>getSocketName sock
</code></strong>127.0.0.1:5000
</pre></div></div><div class="top"><p class="src"><a id="v:socketPair" class="def">socketPair</a> :: <a href="Network-Socket.html#t:Family">Family</a> -&gt; <a href="Network-Socket.html#t:SocketType">SocketType</a> -&gt; <a href="Network-Socket.html#t:ProtocolNumber">ProtocolNumber</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.html#t:Socket">Socket</a>, <a href="Network-Socket.html#t:Socket">Socket</a>) <a href="src/Network-Socket.html#socketPair" class="link">Source</a> <a href="#v:socketPair" class="selflink">#</a></p><div class="doc"><p>Build a pair of connected socket objects using the given address
 family, socket type, and protocol number.  Address family, socket
 type, and protocol number are as for the <code><a href="Network-Socket.html#v:socket">socket</a></code> function above.
 Availability: Unix.</p></div></div><div class="top"><p class="src"><a id="v:connect" class="def">connect</a> :: <a href="Network-Socket.html#t:Socket">Socket</a> -&gt; <a href="Network-Socket.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.html#connect" class="link">Source</a> <a href="#v:connect" class="selflink">#</a></p><div class="doc"><p>Connect to a remote socket at address.</p></div></div><div class="top"><p class="src"><a id="v:bind" class="def">bind</a> :: <a href="Network-Socket.html#t:Socket">Socket</a> -&gt; <a href="Network-Socket.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.html#bind" class="link">Source</a> <a href="#v:bind" class="selflink">#</a></p><div class="doc"><p>Bind the socket to an address. The socket must not already be
 bound.  The <code><a href="Network-Socket.html#t:Family">Family</a></code> passed to <code>bind</code> must be the
 same as that passed to <code><a href="Network-Socket.html#v:socket">socket</a></code>.  If the special port number
 <code><a href="Network-Socket.html#v:aNY_PORT">aNY_PORT</a></code> is passed then the system assigns the next available
 use port.</p></div></div><div class="top"><p class="src"><a id="v:listen" class="def">listen</a> :: <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-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="src/Network-Socket.html#listen" class="link">Source</a> <a href="#v:listen" class="selflink">#</a></p><div class="doc"><p>Listen for connections made to the socket.  The second argument
 specifies the maximum number of queued connections and should be at
 least 1; the maximum value is system-dependent (usually 5).</p></div></div><div class="top"><p class="src"><a id="v:accept" class="def">accept</a> :: <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/System-IO.html#t:IO">IO</a> (<a href="Network-Socket.html#t:Socket">Socket</a>, <a href="Network-Socket.html#t:SockAddr">SockAddr</a>) <a href="src/Network-Socket.html#accept" class="link">Source</a> <a href="#v:accept" class="selflink">#</a></p><div class="doc"><p>Accept a connection.  The socket must be bound to an address and
 listening for connections.  The return value is a pair <code>(conn,
 address)</code> where <code>conn</code> is a new socket object usable to send and
 receive data on the connection, and <code>address</code> is the address bound
 to the socket on the other end of the connection.</p></div></div><div class="top"><p class="src"><a id="v:getPeerName" class="def">getPeerName</a> :: <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/System-IO.html#t:IO">IO</a> <a href="Network-Socket.html#t:SockAddr">SockAddr</a> <a href="src/Network-Socket.html#getPeerName" class="link">Source</a> <a href="#v:getPeerName" class="selflink">#</a></p></div><div class="top"><p class="src"><a id="v:getSocketName" class="def">getSocketName</a> :: <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/System-IO.html#t:IO">IO</a> <a href="Network-Socket.html#t:SockAddr">SockAddr</a> <a href="src/Network-Socket.html#getSocketName" class="link">Source</a> <a href="#v:getSocketName" class="selflink">#</a></p></div><div class="top"><p class="src"><a id="v:getPeerCred" class="def">getPeerCred</a> :: <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/System-IO.html#t:IO">IO</a> (<a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Foreign-C-Types.html#t:CUInt">CUInt</a>, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Foreign-C-Types.html#t:CUInt">CUInt</a>, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Foreign-C-Types.html#t:CUInt">CUInt</a>) <a href="src/Network-Socket.html#getPeerCred" class="link">Source</a> <a href="#v:getPeerCred" class="selflink">#</a></p><div class="doc"><p>Returns the processID, userID and groupID of the socket's peer.</p><p>Only available on platforms that support SO_PEERCRED or GETPEEREID(3)
 on domain sockets.
 GETPEEREID(3) returns userID and groupID. processID is always 0.</p></div></div><div class="top"><p class="src"><a id="v:socketPort" class="def">socketPort</a> :: <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/System-IO.html#t:IO">IO</a> <a href="Network-Socket.html#t:PortNumber">PortNumber</a> <a href="src/Network-Socket.html#socketPort" class="link">Source</a> <a href="#v:socketPort" class="selflink">#</a></p></div><div class="top"><p class="src"><a id="v:socketToHandle" class="def">socketToHandle</a> :: <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/System-IO.html#t:IOMode">IOMode</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="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/GHC-IO-Handle.html#t:Handle">Handle</a> <a href="src/Network-Socket.html#socketToHandle" class="link">Source</a> <a href="#v:socketToHandle" class="selflink">#</a></p><div class="doc"><p>Turns a Socket into an <code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/GHC-IO-Handle.html#t:Handle">Handle</a></code>. By default, the new handle is
 unbuffered. Use <code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/GHC-IO-Handle.html#v:hSetBuffering">hSetBuffering</a></code> to change the buffering.</p><p>Note that since a <code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/GHC-IO-Handle.html#t:Handle">Handle</a></code> is automatically closed by a finalizer
 when it is no longer referenced, you should avoid doing any more
 operations on the <code><a href="Network-Socket.html#t:Socket">Socket</a></code> after calling <code><a href="Network-Socket.html#v:socketToHandle">socketToHandle</a></code>.  To
 close the <code><a href="Network-Socket.html#t:Socket">Socket</a></code> after <code><a href="Network-Socket.html#v:socketToHandle">socketToHandle</a></code>, call <code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/GHC-IO-Handle.html#v:hClose">hClose</a></code>
 on the <code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/GHC-IO-Handle.html#t:Handle">Handle</a></code>.</p></div></div><h2 id="g:4">Sending and receiving data</h2><h3 id="g:5">Sending and receiving with String</h3><div class="doc"><p>Do not use the <code>send</code> and <code>recv</code> functions defined in this section
 in new code, as they incorrectly represent binary data as a Unicode
 string.  As a result, these functions are inefficient and may lead
 to bugs in the program.  Instead use the <code>send</code> and <code>recv</code>
 functions defined in the <a href="Network-Socket-ByteString.html">Network.Socket.ByteString</a> module.</p></div><div class="top"><p class="src"><a id="v:send" class="def">send</a> :: <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 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.html#send" class="link">Source</a> <a href="#v:send" class="selflink">#</a></p><div class="doc"><div class="warning"><p>Warning: Use send defined in <a href="Network-Socket-ByteString.html">Network.Socket.ByteString</a></p></div><p>Send data to the socket. The socket must be connected to a remote
 socket. Returns the number of bytes sent.  Applications are
 responsible for ensuring that all data has been sent.</p><p>Sending data to closed socket may lead to undefined behaviour.</p></div></div><div class="top"><p class="src"><a id="v:sendTo" class="def">sendTo</a> :: <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="Network-Socket.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="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.html#sendTo" class="link">Source</a> <a href="#v:sendTo" class="selflink">#</a></p><div class="doc"><div class="warning"><p>Warning: Use sendTo defined in <a href="Network-Socket-ByteString.html">Network.Socket.ByteString</a></p></div><p>Send data to the socket.  The recipient can be specified
 explicitly, so the socket need not be in a connected state.
 Returns the number of bytes sent.  Applications are responsible for
 ensuring that all data has been sent.</p><p>NOTE: blocking on Windows unless you compile with -threaded (see
 GHC ticket #1129)</p></div></div><div class="top"><p class="src"><a id="v:recv" class="def">recv</a> :: <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-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="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-String.html#t:String">String</a> <a href="src/Network-Socket.html#recv" class="link">Source</a> <a href="#v:recv" class="selflink">#</a></p><div class="doc"><div class="warning"><p>Warning: Use recv defined in <a href="Network-Socket-ByteString.html">Network.Socket.ByteString</a></p></div><p>Receive data from the socket.  The socket must be in a connected
 state. This function may return fewer bytes than specified.  If the
 message is longer than the specified length, it may be discarded
 depending on the type of socket.  This function may block until a
 message arrives.</p><p>Considering hardware and network realities, the maximum number of
 bytes to receive should be a small power of 2, e.g., 4096.</p><p>For TCP sockets, a zero length return value means the peer has
 closed its half side of the connection.</p><p>Receiving data from closed socket may lead to undefined behaviour.</p></div></div><div class="top"><p class="src"><a id="v:recvFrom" class="def">recvFrom</a> :: <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-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="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-String.html#t:String">String</a>, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Int.html#t:Int">Int</a>, <a href="Network-Socket.html#t:SockAddr">SockAddr</a>) <a href="src/Network-Socket.html#recvFrom" class="link">Source</a> <a href="#v:recvFrom" class="selflink">#</a></p><div class="doc"><div class="warning"><p>Warning: Use recvFrom defined in <a href="Network-Socket-ByteString.html">Network.Socket.ByteString</a></p></div><p>Receive data from the socket. The socket need not be in a
 connected state. Returns <code>(bytes, nbytes, address)</code> where <code>bytes</code>
 is a <code>String</code> of length <code>nbytes</code> representing the data received and
 <code>address</code> is a <code><a href="Network-Socket.html#t:SockAddr">SockAddr</a></code> representing the address of the sending
 socket.</p><p>NOTE: blocking on Windows unless you compile with -threaded (see
 GHC ticket #1129)</p></div></div><div class="top"><p class="src"><a id="v:recvLen" class="def">recvLen</a> :: <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-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="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-String.html#t:String">String</a>, <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.html#recvLen" class="link">Source</a> <a href="#v:recvLen" class="selflink">#</a></p><div class="doc"><div class="warning"><p>Warning: Use recvLen defined in <a href="Network-Socket-ByteString.html">Network.Socket.ByteString</a></p></div></div></div><h3 id="g:6">Sending and receiving with a buffer</h3><div class="top"><p class="src"><a id="v:sendBuf" class="def">sendBuf</a> :: <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/Foreign-Ptr.html#t:Ptr">Ptr</a> <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Word.html#t:Word8">Word8</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="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.html#sendBuf" class="link">Source</a> <a href="#v:sendBuf" class="selflink">#</a></p><div class="doc"><p>Send data to the socket. The socket must be connected to a remote
 socket. Returns the number of bytes sent.  Applications are
 responsible for ensuring that all data has been sent.</p><p>Sending data to closed socket may lead to undefined behaviour.</p></div></div><div class="top"><p class="src"><a id="v:recvBuf" class="def">recvBuf</a> :: <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/Foreign-Ptr.html#t:Ptr">Ptr</a> <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Word.html#t:Word8">Word8</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="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.html#recvBuf" class="link">Source</a> <a href="#v:recvBuf" class="selflink">#</a></p><div class="doc"><p>Receive data from the socket.  The socket must be in a connected
 state. This function may return fewer bytes than specified.  If the
 message is longer than the specified length, it may be discarded
 depending on the type of socket.  This function may block until a
 message arrives.</p><p>Considering hardware and network realities, the maximum number of
 bytes to receive should be a small power of 2, e.g., 4096.</p><p>For TCP sockets, a zero length return value means the peer has
 closed its half side of the connection.</p><p>Receiving data from closed socket may lead to undefined behaviour.</p></div></div><div class="top"><p class="src"><a id="v:sendBufTo" class="def">sendBufTo</a> :: <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/Foreign-Ptr.html#t:Ptr">Ptr</a> 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.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="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.html#sendBufTo" class="link">Source</a> <a href="#v:sendBufTo" class="selflink">#</a></p><div class="doc"><p>Send data to the socket.  The recipient can be specified
 explicitly, so the socket need not be in a connected state.
 Returns the number of bytes sent.  Applications are responsible for
 ensuring that all data has been sent.</p></div></div><div class="top"><p class="src"><a id="v:recvBufFrom" class="def">recvBufFrom</a> :: <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/Foreign-Ptr.html#t:Ptr">Ptr</a> 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="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Int.html#t:Int">Int</a>, <a href="Network-Socket.html#t:SockAddr">SockAddr</a>) <a href="src/Network-Socket.html#recvBufFrom" class="link">Source</a> <a href="#v:recvBufFrom" class="selflink">#</a></p><div class="doc"><p>Receive data from the socket, writing it into buffer instead of
 creating a new string.  The socket need not be in a connected
 state. Returns <code>(nbytes, address)</code> where <code>nbytes</code> is the number of
 bytes received and <code>address</code> is a <code><a href="Network-Socket.html#t:SockAddr">SockAddr</a></code> representing the
 address of the sending socket.</p><p>NOTE: blocking on Windows unless you compile with -threaded (see
 GHC ticket #1129)</p></div></div><h2 id="g:7">Misc</h2><div class="top"><p class="src"><a id="v:inet_addr" class="def">inet_addr</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 href="Network-Socket.html#t:HostAddress">HostAddress</a> <a href="src/Network-Socket.html#inet_addr" class="link">Source</a> <a href="#v:inet_addr" class="selflink">#</a></p></div><div class="top"><p class="src"><a id="v:inet_ntoa" class="def">inet_ntoa</a> :: <a href="Network-Socket.html#t:HostAddress">HostAddress</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="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-String.html#t:String">String</a> <a href="src/Network-Socket.html#inet_ntoa" class="link">Source</a> <a href="#v:inet_ntoa" class="selflink">#</a></p></div><div class="top"><p class="src"><a id="v:shutdown" class="def">shutdown</a> :: <a href="Network-Socket.html#t:Socket">Socket</a> -&gt; <a href="Network-Socket.html#t:ShutdownCmd">ShutdownCmd</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.html#shutdown" class="link">Source</a> <a href="#v:shutdown" class="selflink">#</a></p><div class="doc"><p>Shut down one or both halves of the connection, depending on the
 second argument to the function.  If the second argument is
 <code><a href="Network-Socket.html#v:ShutdownReceive">ShutdownReceive</a></code>, further receives are disallowed.  If it is
 <code><a href="Network-Socket.html#v:ShutdownSend">ShutdownSend</a></code>, further sends are disallowed.  If it is
 <code><a href="Network-Socket.html#v:ShutdownBoth">ShutdownBoth</a></code>, further sends and receives are disallowed.</p></div></div><div class="top"><p class="src"><a id="v:close" class="def">close</a> :: <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/System-IO.html#t:IO">IO</a> () <a href="src/Network-Socket.html#close" class="link">Source</a> <a href="#v:close" class="selflink">#</a></p><div class="doc"><p>Close the socket. Sending data to or receiving data from closed socket
 may lead to undefined behaviour.</p></div></div><h2 id="g:8">Predicates on sockets</h2><div class="top"><p class="src"><a id="v:isConnected" class="def">isConnected</a> :: <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/System-IO.html#t:IO">IO</a> <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Bool.html#t:Bool">Bool</a> <a href="src/Network-Socket.html#isConnected" class="link">Source</a> <a href="#v:isConnected" class="selflink">#</a></p><div class="doc"><p>Determines whether <code><a href="Network-Socket.html#v:close">close</a></code> has been used on the <code><a href="Network-Socket.html#t:Socket">Socket</a></code>. This
 does <em>not</em> indicate any status about the socket beyond this. If the
 socket has been closed remotely, this function can still return
 <code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Bool.html#v:True">True</a></code>.</p></div></div><div class="top"><p class="src"><a id="v:isBound" class="def">isBound</a> :: <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/System-IO.html#t:IO">IO</a> <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Bool.html#t:Bool">Bool</a> <a href="src/Network-Socket.html#isBound" class="link">Source</a> <a href="#v:isBound" class="selflink">#</a></p></div><div class="top"><p class="src"><a id="v:isListening" class="def">isListening</a> :: <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/System-IO.html#t:IO">IO</a> <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Bool.html#t:Bool">Bool</a> <a href="src/Network-Socket.html#isListening" class="link">Source</a> <a href="#v:isListening" class="selflink">#</a></p></div><div class="top"><p class="src"><a id="v:isReadable" class="def">isReadable</a> :: <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/System-IO.html#t:IO">IO</a> <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Bool.html#t:Bool">Bool</a> <a href="src/Network-Socket.html#isReadable" class="link">Source</a> <a href="#v:isReadable" class="selflink">#</a></p></div><div class="top"><p class="src"><a id="v:isWritable" class="def">isWritable</a> :: <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/System-IO.html#t:IO">IO</a> <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Bool.html#t:Bool">Bool</a> <a href="src/Network-Socket.html#isWritable" class="link">Source</a> <a href="#v:isWritable" class="selflink">#</a></p></div><h1 id="g:9">Socket options</h1><div class="top"><p class="src"><span class="keyword">data</span> <a id="t:SocketOption" class="def">SocketOption</a> <a href="src/Network-Socket.html#SocketOption" class="link">Source</a> <a href="#t:SocketOption" class="selflink">#</a></p><div class="doc"><p>Socket options for use with <code><a href="Network-Socket.html#v:setSocketOption">setSocketOption</a></code> and <code><a href="Network-Socket.html#v:getSocketOption">getSocketOption</a></code>.</p><p>The existence of a constructor does not imply that the relevant option
 is supported on your system: see <code><a href="Network-Socket.html#v:isSupportedSocketOption">isSupportedSocketOption</a></code></p></div><div class="subs constructors"><p class="caption">Constructors</p><table><tr><td class="src"><a id="v:Debug" class="def">Debug</a></td><td class="doc"><p>SO_DEBUG</p></td></tr><tr><td class="src"><a id="v:ReuseAddr" class="def">ReuseAddr</a></td><td class="doc"><p>SO_REUSEADDR</p></td></tr><tr><td class="src"><a id="v:Type" class="def">Type</a></td><td class="doc"><p>SO_TYPE</p></td></tr><tr><td class="src"><a id="v:SoError" class="def">SoError</a></td><td class="doc"><p>SO_ERROR</p></td></tr><tr><td class="src"><a id="v:DontRoute" class="def">DontRoute</a></td><td class="doc"><p>SO_DONTROUTE</p></td></tr><tr><td class="src"><a id="v:Broadcast" class="def">Broadcast</a></td><td class="doc"><p>SO_BROADCAST</p></td></tr><tr><td class="src"><a id="v:SendBuffer" class="def">SendBuffer</a></td><td class="doc"><p>SO_SNDBUF</p></td></tr><tr><td class="src"><a id="v:RecvBuffer" class="def">RecvBuffer</a></td><td class="doc"><p>SO_RCVBUF</p></td></tr><tr><td class="src"><a id="v:KeepAlive" class="def">KeepAlive</a></td><td class="doc"><p>SO_KEEPALIVE</p></td></tr><tr><td class="src"><a id="v:OOBInline" class="def">OOBInline</a></td><td class="doc"><p>SO_OOBINLINE</p></td></tr><tr><td class="src"><a id="v:TimeToLive" class="def">TimeToLive</a></td><td class="doc"><p>IP_TTL</p></td></tr><tr><td class="src"><a id="v:MaxSegment" class="def">MaxSegment</a></td><td class="doc"><p>TCP_MAXSEG</p></td></tr><tr><td class="src"><a id="v:NoDelay" class="def">NoDelay</a></td><td class="doc"><p>TCP_NODELAY</p></td></tr><tr><td class="src"><a id="v:Cork" class="def">Cork</a></td><td class="doc"><p>TCP_CORK</p></td></tr><tr><td class="src"><a id="v:Linger" class="def">Linger</a></td><td class="doc"><p>SO_LINGER</p></td></tr><tr><td class="src"><a id="v:ReusePort" class="def">ReusePort</a></td><td class="doc"><p>SO_REUSEPORT</p></td></tr><tr><td class="src"><a id="v:RecvLowWater" class="def">RecvLowWater</a></td><td class="doc"><p>SO_RCVLOWAT</p></td></tr><tr><td class="src"><a id="v:SendLowWater" class="def">SendLowWater</a></td><td class="doc"><p>SO_SNDLOWAT</p></td></tr><tr><td class="src"><a id="v:RecvTimeOut" class="def">RecvTimeOut</a></td><td class="doc"><p>SO_RCVTIMEO</p></td></tr><tr><td class="src"><a id="v:SendTimeOut" class="def">SendTimeOut</a></td><td class="doc"><p>SO_SNDTIMEO</p></td></tr><tr><td class="src"><a id="v:UseLoopBack" class="def">UseLoopBack</a></td><td class="doc"><p>SO_USELOOPBACK</p></td></tr><tr><td class="src"><a id="v:UserTimeout" class="def">UserTimeout</a></td><td class="doc"><p>TCP_USER_TIMEOUT</p></td></tr><tr><td class="src"><a id="v:IPv6Only" class="def">IPv6Only</a></td><td class="doc"><p>IPV6_V6ONLY</p></td></tr><tr><td class="src"><a id="v:CustomSockOpt" class="def">CustomSockOpt</a> (<a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Foreign-C-Types.html#t:CInt">CInt</a>, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Foreign-C-Types.html#t:CInt">CInt</a>)</td><td class="doc empty">&nbsp;</td></tr></table></div><div class="subs instances"><p id="control.i:SocketOption" class="caption collapser" onclick="toggleSection('i:SocketOption')">Instances</p><div id="section.i:SocketOption" class="show"><table><tr><td class="src clearfix"><span class="inst-left"><span id="control.i:id:SocketOption:Show:1" class="instance expander" onclick="toggleSection('i:id:SocketOption:Show:1')"></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.html#t:SocketOption">SocketOption</a></span> <a href="src/Network-Socket.html#line-821" class="link">Source</a> <a href="#t:SocketOption" class="selflink">#</a></td><td class="doc empty">&nbsp;</td></tr><tr><td colspan="2"><div id="section.i:id:SocketOption:Show:1" 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.html#t:SocketOption">SocketOption</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.html#t:SocketOption">SocketOption</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.html#t:SocketOption">SocketOption</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><div class="top"><p class="src"><a id="v:isSupportedSocketOption" class="def">isSupportedSocketOption</a> :: <a href="Network-Socket.html#t:SocketOption">SocketOption</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="src/Network-Socket.html#isSupportedSocketOption" class="link">Source</a> <a href="#v:isSupportedSocketOption" class="selflink">#</a></p><div class="doc"><p>Does the <code><a href="Network-Socket.html#t:SocketOption">SocketOption</a></code> exist on this system?</p></div></div><div class="top"><p class="src"><a id="v:getSocketOption" class="def">getSocketOption</a> :: <a href="Network-Socket.html#t:Socket">Socket</a> -&gt; <a href="Network-Socket.html#t:SocketOption">SocketOption</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="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.html#getSocketOption" class="link">Source</a> <a href="#v:getSocketOption" class="selflink">#</a></p><div class="doc"><p>Get a socket option that gives an Int value.
 There is currently no API to get e.g. the timeval socket options</p></div></div><div class="top"><p class="src"><a id="v:setSocketOption" class="def">setSocketOption</a> :: <a href="Network-Socket.html#t:Socket">Socket</a> -&gt; <a href="Network-Socket.html#t:SocketOption">SocketOption</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="src/Network-Socket.html#setSocketOption" class="link">Source</a> <a href="#v:setSocketOption" class="selflink">#</a></p><div class="doc"><p>Set a socket option that expects an Int value.
 There is currently no API to set e.g. the timeval socket options</p></div></div><h1 id="g:10">File descriptor transmission</h1><div class="top"><p class="src"><a id="v:sendFd" class="def">sendFd</a> :: <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/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 href="src/Network-Socket.html#sendFd" class="link">Source</a> <a href="#v:sendFd" class="selflink">#</a></p></div><div class="top"><p class="src"><a id="v:recvFd" class="def">recvFd</a> :: <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/System-IO.html#t:IO">IO</a> <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Foreign-C-Types.html#t:CInt">CInt</a> <a href="src/Network-Socket.html#recvFd" class="link">Source</a> <a href="#v:recvFd" class="selflink">#</a></p></div><h1 id="g:11">Special constants</h1><div class="top"><p class="src"><a id="v:aNY_PORT" class="def">aNY_PORT</a> :: <a href="Network-Socket.html#t:PortNumber">PortNumber</a> <a href="src/Network-Socket.html#aNY_PORT" class="link">Source</a> <a href="#v:aNY_PORT" class="selflink">#</a></p></div><div class="top"><p class="src"><a id="v:iNADDR_ANY" class="def">iNADDR_ANY</a> :: <a href="Network-Socket.html#t:HostAddress">HostAddress</a> <a href="src/Network-Socket.html#iNADDR_ANY" class="link">Source</a> <a href="#v:iNADDR_ANY" class="selflink">#</a></p><div class="doc"><p>The IPv4 wild card address.</p></div></div><div class="top"><p class="src"><a id="v:iN6ADDR_ANY" class="def">iN6ADDR_ANY</a> :: <a href="Network-Socket.html#t:HostAddress6">HostAddress6</a> <a href="src/Network-Socket.html#iN6ADDR_ANY" class="link">Source</a> <a href="#v:iN6ADDR_ANY" class="selflink">#</a></p><div class="doc"><p>The IPv6 wild card address.</p></div></div><div class="top"><p class="src"><a id="v:sOMAXCONN" class="def">sOMAXCONN</a> :: <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.html#sOMAXCONN" class="link">Source</a> <a href="#v:sOMAXCONN" class="selflink">#</a></p></div><div class="top"><p class="src"><a id="v:sOL_SOCKET" class="def">sOL_SOCKET</a> :: <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.html#sOL_SOCKET" class="link">Source</a> <a href="#v:sOL_SOCKET" class="selflink">#</a></p></div><div class="top"><p class="src"><a id="v:sCM_RIGHTS" class="def">sCM_RIGHTS</a> :: <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.html#sCM_RIGHTS" class="link">Source</a> <a href="#v:sCM_RIGHTS" class="selflink">#</a></p></div><div class="top"><p class="src"><a id="v:maxListenQueue" class="def">maxListenQueue</a> :: <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.html#maxListenQueue" class="link">Source</a> <a href="#v:maxListenQueue" class="selflink">#</a></p><div class="doc"><p>This is the value of SOMAXCONN, typically 128.
 128 is good enough for normal network servers but
 is too small for high performance servers.</p></div></div><h1 id="g:12">Initialisation</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.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.html#v:withSocketsDo">withSocketsDo</a></code>, and to perform networking operations
after <code><a href="Network-Socket.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.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.html#v:withSocketsDo">withSocketsDo</a></code> (it's very cheap).</p></div></div><h1 id="g:13">Very low level operations</h1><div class="top"><p class="src"><a id="v:fdSocket" class="def">fdSocket</a> :: <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/Foreign-C-Types.html#t:CInt">CInt</a> <a href="src/Network-Socket.html#fdSocket" class="link">Source</a> <a href="#v:fdSocket" class="selflink">#</a></p></div><div class="top"><p class="src"><a id="v:mkSocket" class="def">mkSocket</a> :: <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="Network-Socket.html#t:Family">Family</a> -&gt; <a href="Network-Socket.html#t:SocketType">SocketType</a> -&gt; <a href="Network-Socket.html#t:ProtocolNumber">ProtocolNumber</a> -&gt; <a href="Network-Socket.html#t:SocketStatus">SocketStatus</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.html#t:Socket">Socket</a> <a href="src/Network-Socket.html#mkSocket" class="link">Source</a> <a href="#v:mkSocket" class="selflink">#</a></p></div><h1 id="g:14">Deprecated aliases</h1><div class="doc"><p>These aliases are deprecated and should not be used in new code.
 They will be removed in some future version of the package.</p></div><div class="top"><p class="src"><a id="v:bindSocket" class="def">bindSocket</a> :: <a href="Network-Socket.html#t:Socket">Socket</a> -&gt; <a href="Network-Socket.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.html#bindSocket" class="link">Source</a> <a href="#v:bindSocket" class="selflink">#</a></p><div class="doc"><div class="warning"><p>Deprecated: use <code><a href="Network-Socket.html#v:bind">bind</a></code></p></div><p>Deprecated alias for <code><a href="Network-Socket.html#v:bind">bind</a></code>.</p></div></div><div class="top"><p class="src"><a id="v:sClose" class="def">sClose</a> :: <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/System-IO.html#t:IO">IO</a> () <a href="src/Network-Socket.html#sClose" class="link">Source</a> <a href="#v:sClose" class="selflink">#</a></p><div class="doc"><div class="warning"><p>Deprecated: use <code><a href="Network-Socket.html#v:close">close</a></code></p></div><p>Deprecated alias for <code><a href="Network-Socket.html#v:close">close</a></code>.</p></div></div><div class="top"><p class="src"><a id="v:sIsConnected" class="def">sIsConnected</a> :: <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/System-IO.html#t:IO">IO</a> <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Bool.html#t:Bool">Bool</a> <a href="src/Network-Socket.html#sIsConnected" class="link">Source</a> <a href="#v:sIsConnected" class="selflink">#</a></p><div class="doc"><div class="warning"><p>Deprecated: use <code><a href="Network-Socket.html#v:isConnected">isConnected</a></code></p></div><p>Deprecated alias for <code><a href="Network-Socket.html#v:isConnected">isConnected</a></code>.</p></div></div><div class="top"><p class="src"><a id="v:sIsBound" class="def">sIsBound</a> :: <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/System-IO.html#t:IO">IO</a> <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Bool.html#t:Bool">Bool</a> <a href="src/Network-Socket.html#sIsBound" class="link">Source</a> <a href="#v:sIsBound" class="selflink">#</a></p><div class="doc"><div class="warning"><p>Deprecated: use <code><a href="Network-Socket.html#v:isBound">isBound</a></code></p></div><p>Deprecated alias for <code><a href="Network-Socket.html#v:isBound">isBound</a></code>.</p></div></div><div class="top"><p class="src"><a id="v:sIsListening" class="def">sIsListening</a> :: <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/System-IO.html#t:IO">IO</a> <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Bool.html#t:Bool">Bool</a> <a href="src/Network-Socket.html#sIsListening" class="link">Source</a> <a href="#v:sIsListening" class="selflink">#</a></p><div class="doc"><div class="warning"><p>Deprecated: use <code><a href="Network-Socket.html#v:isListening">isListening</a></code></p></div><p>Deprecated alias for <code><a href="Network-Socket.html#v:isListening">isListening</a></code>.</p></div></div><div class="top"><p class="src"><a id="v:sIsReadable" class="def">sIsReadable</a> :: <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/System-IO.html#t:IO">IO</a> <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Bool.html#t:Bool">Bool</a> <a href="src/Network-Socket.html#sIsReadable" class="link">Source</a> <a href="#v:sIsReadable" class="selflink">#</a></p><div class="doc"><div class="warning"><p>Deprecated: use <code><a href="Network-Socket.html#v:isReadable">isReadable</a></code></p></div><p>Deprecated alias for <code><a href="Network-Socket.html#v:isReadable">isReadable</a></code>.</p></div></div><div class="top"><p class="src"><a id="v:sIsWritable" class="def">sIsWritable</a> :: <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/System-IO.html#t:IO">IO</a> <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Bool.html#t:Bool">Bool</a> <a href="src/Network-Socket.html#sIsWritable" class="link">Source</a> <a href="#v:sIsWritable" class="selflink">#</a></p><div class="doc"><div class="warning"><p>Deprecated: use <code><a href="Network-Socket.html#v:isWritable">isWritable</a></code></p></div><p>Deprecated alias for <code><a href="Network-Socket.html#v:isWritable">isWritable</a></code>.</p></div></div><h1 id="g:15">Internal</h1><div class="doc"><p>The following are exported ONLY for use in the BSD module and
 should not be used anywhere else.</p></div><div class="top"><p class="src"><a id="v:packFamily" class="def">packFamily</a> :: <a href="Network-Socket.html#t:Family">Family</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> <a href="src/Network-Socket-Types.html#packFamily" class="link">Source</a> <a href="#v:packFamily" class="selflink">#</a></p></div><div class="top"><p class="src"><a id="v:unpackFamily" class="def">unpackFamily</a> :: <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="Network-Socket.html#t:Family">Family</a> <a href="src/Network-Socket-Types.html#unpackFamily" class="link">Source</a> <a href="#v:unpackFamily" class="selflink">#</a></p></div><div class="top"><p class="src"><a id="v:packSocketType" class="def">packSocketType</a> :: <a href="Network-Socket.html#t:SocketType">SocketType</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> <a href="src/Network-Socket-Types.html#packSocketType" class="link">Source</a> <a href="#v:packSocketType" class="selflink">#</a></p></div><h1>Orphan instances</h1><div id="section.orphans" class="show"><table><tr><td class="src clearfix"><span class="inst-left"><span id="control.i:o:ic:Show:Show:1" class="instance expander" onclick="toggleSection('i:o:ic:Show:Show:1')"></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.html#t:SockAddr">SockAddr</a></span> <a href="src/Network-Socket.html#line-287" class="link">Source</a> <a href="#v:-36-fShowSockAddr" class="selflink">#</a></td><td class="doc empty">&nbsp;</td></tr><tr><td colspan="2"><div id="section.i:o:ic:Show:Show:1" 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.html#t:SockAddr">SockAddr</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.html#t:SockAddr">SockAddr</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.html#t:SockAddr">SockAddr</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><div id="footer"><p>Produced by <a href="http://www.haskell.org/haddock/">Haddock</a> version 2.17.2</p></div></body></html>