freenode figured this out. Pasting here for future reference.<br><br><br><pre class="sourceCode haskell"><code><span class="kw">import</span> <span class="dt">Control.Concurrent</span><br><span class="kw">import</span> <span class="dt">Network</span><br>
<span class="kw">import</span> <span class="dt">System.IO</span><br><br>main :: <span class="dt">IO</span> ()<br>main <span class="fu">=</span> withSocketsDo <span class="fu">$</span> <span class="kw">do</span><br> m <- newEmptyMVar<br>
forkIO (waitAndPong m)<br> ping m<br><br><span class="co">-- The basic server</span><br>waitAndPong :: <span class="dt">MVar</span> () -> <span class="dt">IO</span> ()<br>waitAndPong m <span class="fu">=</span> <span class="kw">do</span><br>
socket <- listenOn (<span class="dt">PortNumber</span> <span class="dv">8000</span>)<br> putMVar m ()<br> (handle,_,_) <- accept socket<br> hSetBuffering handle <span class="dt">LineBuffering</span><br>
incoming <- hGetLine handle<br> <span class="fu">putStrLn</span> (<span class="st">"> "</span> <span class="fu">++</span> incoming)<br> hPutStrLn handle <span class="st">"pong"</span><br>
<br><span class="co">-- The basic client</span><br>ping :: <span class="dt">MVar</span> () -> <span class="dt">IO</span> ()<br>ping m <span class="fu">=</span> <span class="kw">do</span><br> _ <- takeMVar m<br> handle <- connectTo <span class="st">"localhost"</span> (<span class="dt">PortNumber</span> <span class="dv">8000</span>)<br>
hSetBuffering handle <span class="dt">LineBuffering</span><br> hPutStrLn handle <span class="st">"ping"</span><br> incoming <- hGetLine handle<br> <span class="fu">putStrLn</span> (<span class="st">"< "</span> <span class="fu">++</span> incoming)</code><code><span class="kw"></span></code><br>
</pre><br><div class="gmail_quote">On Thu, Jan 20, 2011 at 6:17 PM, Michael Litchard <span dir="ltr"><<a href="mailto:michael@schmong.org">michael@schmong.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">
I tried this as an example and got the following error when running.<br><br>net.exe: connect: failed (Connection refused (WSAECONNREFUSED))<br><br>Firewall is off, running as administrator<br><br>Windows is Windows 7 Enterprise.<br>
<br>Advice on what to do next is appreciated<div><div></div><div class="h5"><br><br><div class="gmail_quote">On Tue, Nov 2, 2010 at 1:24 PM, Nils Schweinsberg <span dir="ltr"><<a href="mailto:ml@n-sch.de" target="_blank">ml@n-sch.de</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">
Am 02.11.2010 19:57, schrieb Michael Litchard:<div><br>
<blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">
got any urls with examples?<br>
</blockquote>
<br></div>
Sure, see this short server-client-ping-pong application.<br>
<br>
By the way, I noticed that you don't need withSocketsDo on windows 7, but I guess it's there for a reason for older windows versions. :)<br>
<br>
<br>
<br>
import Control.Concurrent<br>
import Network<br>
import System.IO<br>
<br>
main :: IO ()<br>
main = withSocketsDo $ do<br>
forkIO waitAndPong<br>
ping<br>
<br>
-- The basic server<br>
waitAndPong :: IO ()<br>
waitAndPong = do<br>
socket <- listenOn (PortNumber 1234)<br>
(handle,_,_) <- accept socket<br>
hSetBuffering handle LineBuffering<br>
incoming <- hGetLine handle<br>
putStrLn ("> " ++ incoming)<br>
hPutStrLn handle "pong"<br>
<br>
-- The basic client<br>
ping :: IO ()<br>
ping = do<br>
handle <- connectTo "localhost" (PortNumber 1234)<br>
hSetBuffering handle LineBuffering<br>
hPutStrLn handle "ping"<br>
incoming <- hGetLine handle<br>
putStrLn ("< " ++ incoming)<div><div></div><div><br>
_______________________________________________<br>
Haskell-Cafe mailing list<br>
<a href="mailto:Haskell-Cafe@haskell.org" target="_blank">Haskell-Cafe@haskell.org</a><br>
<a href="http://www.haskell.org/mailman/listinfo/haskell-cafe" target="_blank">http://www.haskell.org/mailman/listinfo/haskell-cafe</a><br>
</div></div></blockquote></div><br>
</div></div></blockquote></div><br>