This file is indexed.

/usr/share/doc/libghc-network-doc/html/Network.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
<!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</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.html");};
//]]>
</script></head><body><div id="package-header"><ul class="links" id="page-menu"><li><a href="src/Network.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</p></div><div id="table-of-contents"><p class="caption">Contents</p><ul><li><a href="#g:1">Basic data types</a></li><li><a href="#g:2">Initialisation</a></li><li><a href="#g:3">Server-side connections</a></li><li><a href="#g:4">Client-side connections</a></li><li><a href="#g:5">Simple sending and receiving</a></li><li><a href="#g:6">Miscellaneous</a></li><li><a href="#g:7">Networking Issues</a><ul><li><a href="#g:8">Buffering</a></li><li><a href="#g:9">Improving I/O Performance over sockets</a></li></ul></li></ul></div><div id="description"><p class="caption">Description</p><div class="doc"><p>This module is kept for backwards-compatibility. New users are
 encouraged to use <a href="Network-Socket.html">Network.Socket</a> instead.</p><p><a href="Network.html">Network</a> was intended as a &quot;higher-level&quot; interface to networking
 facilities, and only supports TCP.</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></li><li class="src short"><span class="keyword">data</span> <a href="#t:PortID">PortID</a><ul class="subs"><li>= <a href="#v:Service">Service</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:PortNumber">PortNumber</a> <a href="Network.html#t:PortNumber">PortNumber</a></li><li>| <a href="#v:UnixSocket">UnixSocket</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">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">data</span> <a href="#t:PortNumber">PortNumber</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:listenOn">listenOn</a> :: <a href="Network.html#t:PortID">PortID</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.html#t:Socket">Socket</a></li><li class="src short"><a href="#v:accept">accept</a> :: <a href="Network.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/GHC-IO-Handle.html#t:Handle">Handle</a>, <a href="Network.html#t:HostName">HostName</a>, <a href="Network.html#t:PortNumber">PortNumber</a>)</li><li class="src short"><a href="#v:sClose">sClose</a> :: <a href="Network.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:connectTo">connectTo</a> :: <a href="Network.html#t:HostName">HostName</a> -&gt; <a href="Network.html#t:PortID">PortID</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:sendTo">sendTo</a> :: <a href="Network.html#t:HostName">HostName</a> -&gt; <a href="Network.html#t:PortID">PortID</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> ()</li><li class="src short"><a href="#v:recvFrom">recvFrom</a> :: <a href="Network.html#t:HostName">HostName</a> -&gt; <a href="Network.html#t:PortID">PortID</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:socketPort">socketPort</a> :: <a href="Network.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.html#t:PortID">PortID</a></li></ul></div><div id="interface"><h1 id="g:1">Basic data 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 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.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.html#t:Socket">Socket</a> -&gt; <a href="Network.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.html#t:Socket">Socket</a> -&gt; <a href="Network.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.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.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.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.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:PortID" class="def">PortID</a> <a href="src/Network.html#PortID" class="link">Source</a> <a href="#t:PortID" class="selflink">#</a></p><div class="subs constructors"><p class="caption">Constructors</p><table><tr><td class="src"><a id="v:Service" class="def">Service</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:PortNumber" class="def">PortNumber</a> <a href="Network.html#t:PortNumber">PortNumber</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a id="v:UnixSocket" class="def">UnixSocket</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></table></div><div class="subs instances"><p id="control.i:PortID" class="caption collapser" onclick="toggleSection('i:PortID')">Instances</p><div id="section.i:PortID" class="show"><table><tr><td class="src clearfix"><span class="inst-left"><span id="control.i:id:PortID:Eq:1" class="instance expander" onclick="toggleSection('i:id:PortID: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.html#t:PortID">PortID</a></span> <a href="src/Network.html#line-87" class="link">Source</a> <a href="#t:PortID" class="selflink">#</a></td><td class="doc empty">&nbsp;</td></tr><tr><td colspan="2"><div id="section.i:id:PortID: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.html#t:PortID">PortID</a> -&gt; <a href="Network.html#t:PortID">PortID</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.html#t:PortID">PortID</a> -&gt; <a href="Network.html#t:PortID">PortID</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:PortID:Show:2" class="instance expander" onclick="toggleSection('i:id:PortID: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.html#t:PortID">PortID</a></span> <a href="src/Network.html#line-87" class="link">Source</a> <a href="#t:PortID" class="selflink">#</a></td><td class="doc empty">&nbsp;</td></tr><tr><td colspan="2"><div id="section.i:id:PortID: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.html#t:PortID">PortID</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.html#t:PortID">PortID</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.html#t:PortID">PortID</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: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">data</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 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.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.html#t:PortNumber">PortNumber</a> -&gt; <a href="Network.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.html#t:PortNumber">PortNumber</a> -&gt; <a href="Network.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.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.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.html#t:PortNumber">PortNumber</a> -&gt; [<a href="Network.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.html#t:PortNumber">PortNumber</a> -&gt; <a href="Network.html#t:PortNumber">PortNumber</a> -&gt; [<a href="Network.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.html#t:PortNumber">PortNumber</a> -&gt; <a href="Network.html#t:PortNumber">PortNumber</a> -&gt; [<a href="Network.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.html#t:PortNumber">PortNumber</a> -&gt; <a href="Network.html#t:PortNumber">PortNumber</a> -&gt; <a href="Network.html#t:PortNumber">PortNumber</a> -&gt; [<a href="Network.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.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.html#t:PortNumber">PortNumber</a> -&gt; <a href="Network.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.html#t:PortNumber">PortNumber</a> -&gt; <a href="Network.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.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.html#t:PortNumber">PortNumber</a> -&gt; <a href="Network.html#t:PortNumber">PortNumber</a> -&gt; <a href="Network.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.html#t:PortNumber">PortNumber</a> -&gt; <a href="Network.html#t:PortNumber">PortNumber</a> -&gt; <a href="Network.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.html#t:PortNumber">PortNumber</a> -&gt; <a href="Network.html#t:PortNumber">PortNumber</a> -&gt; <a href="Network.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.html#t:PortNumber">PortNumber</a> -&gt; <a href="Network.html#t:PortNumber">PortNumber</a> -&gt; <a href="Network.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.html#t:PortNumber">PortNumber</a> -&gt; <a href="Network.html#t:PortNumber">PortNumber</a> -&gt; (<a href="Network.html#t:PortNumber">PortNumber</a>, <a href="Network.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.html#t:PortNumber">PortNumber</a> -&gt; <a href="Network.html#t:PortNumber">PortNumber</a> -&gt; (<a href="Network.html#t:PortNumber">PortNumber</a>, <a href="Network.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.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.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.html#t:PortNumber">PortNumber</a> -&gt; <a href="Network.html#t:PortNumber">PortNumber</a> -&gt; <a href="Network.html#t:PortNumber">PortNumber</a> <a href="#v:-43-" class="selflink">#</a></p><p class="src"><a href="#v:-45-">(-)</a> :: <a href="Network.html#t:PortNumber">PortNumber</a> -&gt; <a href="Network.html#t:PortNumber">PortNumber</a> -&gt; <a href="Network.html#t:PortNumber">PortNumber</a> <a href="#v:-45-" class="selflink">#</a></p><p class="src"><a href="#v:-42-">(*)</a> :: <a href="Network.html#t:PortNumber">PortNumber</a> -&gt; <a href="Network.html#t:PortNumber">PortNumber</a> -&gt; <a href="Network.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.html#t:PortNumber">PortNumber</a> -&gt; <a href="Network.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.html#t:PortNumber">PortNumber</a> -&gt; <a href="Network.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.html#t:PortNumber">PortNumber</a> -&gt; <a href="Network.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.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.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.html#t:PortNumber">PortNumber</a> -&gt; <a href="Network.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.html#t:PortNumber">PortNumber</a> -&gt; <a href="Network.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.html#t:PortNumber">PortNumber</a> -&gt; <a href="Network.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.html#t:PortNumber">PortNumber</a> -&gt; <a href="Network.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.html#t:PortNumber">PortNumber</a> -&gt; <a href="Network.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.html#t:PortNumber">PortNumber</a> -&gt; <a href="Network.html#t:PortNumber">PortNumber</a> -&gt; <a href="Network.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.html#t:PortNumber">PortNumber</a> -&gt; <a href="Network.html#t:PortNumber">PortNumber</a> -&gt; <a href="Network.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.html#t:PortNumber">PortNumber</a> -&gt; <a href="Network.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">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.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.html#v:withSocketsDo">withSocketsDo</a></code>, and to perform networking operations
after <code><a href="Network.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.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.html#v:withSocketsDo">withSocketsDo</a></code> (it's very cheap).</p></div></div><h1 id="g:3">Server-side connections</h1><div class="top"><p class="src"><a id="v:listenOn" class="def">listenOn</a> <a href="src/Network.html#listenOn" class="link">Source</a> <a href="#v:listenOn" class="selflink">#</a></p><div class="subs arguments"><p class="caption">Arguments</p><table><tr><td class="src">:: <a href="Network.html#t:PortID">PortID</a></td><td class="doc"><p>Port Identifier</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.html#t:Socket">Socket</a></td><td class="doc"><p>Listening Socket</p></td></tr></table></div><div class="doc"><p>Creates the server side socket which has been bound to the
 specified port.</p><p><code><a href="Network-Socket.html#v:maxListenQueue">maxListenQueue</a></code> (typically 128) is specified to the listen queue.
 This is good enough for normal network servers but is too small
 for high performance servers.</p><p>To avoid the &quot;Address already in use&quot; problems,
 the <code><a href="Network-Socket.html#v:ReuseAddr">ReuseAddr</a></code> socket option is set on the listening socket.</p><p>If available, 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 accepted with this socket.</p><p>If you don't like the behavior above, please use the lower level
 <code><a href="Network-Socket.html#v:listen">listen</a></code> instead.</p></div></div><div class="top"><p class="src"><a id="v:accept" class="def">accept</a> <a href="src/Network.html#accept" class="link">Source</a> <a href="#v:accept" class="selflink">#</a></p><div class="subs arguments"><p class="caption">Arguments</p><table><tr><td class="src">:: <a href="Network.html#t:Socket">Socket</a></td><td class="doc"><p>Listening Socket</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/GHC-IO-Handle.html#t:Handle">Handle</a>, <a href="Network.html#t:HostName">HostName</a>, <a href="Network.html#t:PortNumber">PortNumber</a>)</td><td class="doc"><p>Triple of: read/write <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> for
 communicating with the client,
 the <code><a href="Network.html#t:HostName">HostName</a></code> of the peer socket, and
 the <code><a href="Network.html#t:PortNumber">PortNumber</a></code> of the remote connection.</p></td></tr></table></div><div class="doc"><p>Accept a connection on a socket created by <code><a href="Network.html#v:listenOn">listenOn</a></code>.  Normal
 I/O operations (see <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/System-IO.html">System.IO</a>) can be used 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>
 returned to communicate with the client.
 Notice that although you can pass any Socket to Network.accept,
 only sockets of either AF_UNIX, AF_INET, or AF_INET6 will work
 (this shouldn't be a problem, though). When using AF_UNIX, HostName
 will be set to the path of the socket and PortNumber to -1.</p></div></div><div class="top"><p class="src"><a id="v:sClose" class="def">sClose</a> :: <a href="Network.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.html#sClose" class="link">Source</a> <a href="#v:sClose" 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><h1 id="g:4">Client-side connections</h1><div class="top"><p class="src"><a id="v:connectTo" class="def">connectTo</a> :: <a href="Network.html#t:HostName">HostName</a> -&gt; <a href="Network.html#t:PortID">PortID</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.html#connectTo" class="link">Source</a> <a href="#v:connectTo" class="selflink">#</a></p><div class="doc"><p>Calling <code><a href="Network.html#v:connectTo">connectTo</a></code> creates a client side socket which is
 connected to the given host and port.  The Protocol and socket type is
 derived from the given port identifier.  If a port number is given
 then the result is always an internet family <code><a href="Network-Socket.html#v:Stream">Stream</a></code> socket.</p></div></div><h1 id="g:5">Simple sending and receiving</h1><div class="doc"><p>Send and receive data from/to the given host and port number.  These
should normally only be used where the socket will not be required for
further calls. Also, note that due to the use of <code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/GHC-IO-Handle.html#v:hGetContents">hGetContents</a></code> in <code><a href="Network.html#v:recvFrom">recvFrom</a></code>
the socket will remain open (i.e. not available) even if the function already
returned. Their use is strongly discouraged except for small test-applications
or invocations from the command line.</p></div><div class="top"><p class="src"><a id="v:sendTo" class="def">sendTo</a> :: <a href="Network.html#t:HostName">HostName</a> -&gt; <a href="Network.html#t:PortID">PortID</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="src/Network.html#sendTo" class="link">Source</a> <a href="#v:sendTo" class="selflink">#</a></p></div><div class="top"><p class="src"><a id="v:recvFrom" class="def">recvFrom</a> :: <a href="Network.html#t:HostName">HostName</a> -&gt; <a href="Network.html#t:PortID">PortID</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.html#recvFrom" class="link">Source</a> <a href="#v:recvFrom" class="selflink">#</a></p></div><h1 id="g:6">Miscellaneous</h1><div class="top"><p class="src"><a id="v:socketPort" class="def">socketPort</a> :: <a href="Network.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.html#t:PortID">PortID</a> <a href="src/Network.html#socketPort" class="link">Source</a> <a href="#v:socketPort" class="selflink">#</a></p><div class="doc"><p>Returns the <code><a href="Network.html#t:PortID">PortID</a></code> associated with a given socket.</p></div></div><h1 id="g:7">Networking Issues</h1><h2 id="g:8">Buffering</h2><div class="doc"><p>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> returned by <code><a href="Network.html#v:connectTo">connectTo</a></code> and <code><a href="Network.html#v:accept">accept</a></code> is block-buffered by
default.  For an interactive application you may want to set the
buffering mode 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> to
<code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/GHC-IO-Handle.html#v:LineBuffering">LineBuffering</a></code> or <code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/GHC-IO-Handle.html#v:NoBuffering">NoBuffering</a></code>, like so:</p><pre>h &lt;- connectTo host port
hSetBuffering h LineBuffering</pre></div><h2 id="g:9">Improving I/O Performance over sockets</h2><div class="doc"><p>For really fast I/O, it might be worth looking at the <code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/GHC-IO-Handle.html#v:hGetBuf">hGetBuf</a></code> and
<code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/GHC-IO-Handle.html#v:hPutBuf">hPutBuf</a></code> family of functions in <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/System-IO.html">System.IO</a>.</p></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>