Ping server in Haskell (not that kind of ping, and rather silly)
Yesterday I needed to do some tests involving tunneling of network connections. Rather than firing up the full client-server setup that I want to tunnel I thought I’d use someting simple to test with first. Instead of looking online for a simple server to use, or hack one up using netcat, or even hack one in Python I decided to hack one in Haskell:
module Main where import Control.Monad import System.Environment(getArgs) import Network import System.IO main = withSocketsDo $ do [port_str] <- getArgs let port = fromIntegral (read port_str :: Int) serv_sock <- listenOn (PortNumber port) forever $ do (handle, host, port) <- accept serv_sock cmd <- hGetLine handle when (cmd == "Ping") $ hPutStr handle "Pong" hClose handle |
For this post there are some good comments on reddit. (Thanks Don for posting it to reddit in the first place.)